Postgresql 开启huge pages

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/

你可能感兴趣的:(Postgresql 开启huge pages)