debian启用巨页内存
内存是分页管理的,传统上每页内存是4K大小,当系统内存很大时,页表项剧增,查找内存页表增加了系统的负担,因此出现了巨页.当前amd64架构支持2M内存页和1G内存页,默认巨页大小是2M.
创建巨页内存组
1 | # groupadd hugetlbfs |
把postgres用户加入巨页内存组,从而使postgresql可以分配巨页内存
编辑/etc/sysctl.conf
1 | vm.nr_hugepages = 13824 # 巨页内存池大小,系统保留多少页巨页内存,这里保留了13824*2M=27G |
创建巨页内存挂载点
1 | # mkdir /hugepages |
编辑/etc/fstab自动挂载巨页内存文件系统
1 | hugetlbfs /hugepages hugetlbfs mode=1770,gid=1001 0 0 |
配置生效
1 | # sysctl -p |
如果内存碎片化太严重而无法为巨页池保留足够的内存,可以重新启动系统,或者先试图释放系统缓存再重试sysctl命令
1 | # sync ; echo 3 > /proc/sys/vm/drop_caches |
查看巨页内存使用情况:
1 | $ grep 'Huge' /proc/meminfo |
References:
[1]Hugepages
===
[erq]