CentOS release 6.7 (Final)
Postgresql 9.4.4
修改postgresql.conf参数 huge_pages = on 默认是try
修改grub引导配置文件grub.conf 添加
numa=off
transparent_hugepage=never
或者在/etc/rc.local加入
echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag
cd $PGDATA
head -1 postmaster.pid
9171
grep ^VmPeak /proc/9171/status
VmPeak: 4503100 k
未开启大页
cat /proc/meminfo |grep -i huge
AnonHugePages: 2048 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
4503100/2048=2198
vi /etc/sysctl.conf 加入
vm.nr_hugepages=2198
sysctl -p --载入配置文件
查看大页已经开启
AnonHugePages: 2048 kB
HugePages_Total: 2198 --系统当前总共拥有的HugePages数目
HugePages_Free: 2133 --系统当前总共拥有的空闲HugePages数目
HugePages_Rsvd: 2046 --系统当前总共保留的HugePages数目,更具体点就是指程序已经向系统申请,但是由于程序还没有实质的HugePages读写操作,因此系统尚未实际分配给程序的HugePages数目
HugePages_Surp: 0 --指超过系统设定的常驻HugePages数目的数目
Hugepagesize: 2048 kB --每一页HugePages的大小
以下可以对应到上面的
# cat /proc/sys/vm/nr_hugepages
2198
#cat /proc/sys/vm/nr_hugepages_mempolicy
2198
#cat /proc/sys/vm/nr_overcommit_hugepages
0
可以看到是两个个NUMA节点的系统
cat /sys/devices/system/node/node*/meminfo | fgrep Huge
Node 0 HugePages_Total: 1099
Node 0 HugePages_Free: 1034
Node 0 HugePages_Surp: 0
Node 1 HugePages_Total: 1099
Node 1 HugePages_Free: 1099
Node 1 HugePages_Surp: 0
参考
http://blog.csdn.net/cybertan/article/details/9035727
http://www.postgresql.org/docs/9.4/static/kernel-resources.html#LINUX-HUGE-PAGES
http://blog.163.com/digoal@126/blog/static/1638770402016011115141697/