PostgreSQL DBA(100) - Linux(Huge Pages)

PostgreSQL通过参数huge_pages设置是否启用大页,利用常驻内存用以提升性能,本节简单介绍了Linux中Huge Pages的相关设置。

Check if CPU supports HugePages 2MB Size
命令如下,关键字是 pse(Page Size Extension)

[root@localhost ~]# cat /proc/cpuinfo | grep pse | uniq
flags   : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm fsgsbase smep arat
[root@localhost ~]# 
[root@localhost ~]#cat /proc/cpuinfo | egrep -o pse | head -n 1
pse
[root@localhost ~]#

Check if CPU supports HugePages 1GB Size
命令如下,关键字是pdpe1gb

[root@localhost ~]# grep pdpe1gb /proc/cpuinfo | head -n 1
flags   : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 x2apic movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm fsgsbase smep arat
[root@localhost ~]# 
[root@localhost ~]# egrep -o pdpe1gb /proc/cpuinfo | head -n 1
pdpe1gb
[root@localhost ~]#

How to change default HugePage size?
默认大小为2MB

[root@localhost ~]# grep Hugepagesize: /proc/meminfo
Hugepagesize:       2048 kB
[root@localhost ~]#

修改命令为

[root@localhost ~]# grep GRUB_CMDLINE_LINUX /etc/sysconfig/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
[root@localhost ~]# 
[root@localhost ~]# vim /etc/sysconfig/grub
[root@localhost ~]# grep GRUB_CMDLINE_LINUX /etc/sysconfig/grub
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet  default_hugepagesz=1G"
[root@localhost ~]# 
[root@localhost ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.2.14-1.el7.elrepo.x86_64
Found initrd image: /boot/initramfs-5.2.14-1.el7.elrepo.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-957.27.2.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-957.27.2.el7.x86_64.img
Found linux image: /boot/vmlinuz-3.10.0-693.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-693.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-f0b4bffdc9e44816abd201320f8a4f75
Found initrd image: /boot/initramfs-0-rescue-f0b4bffdc9e44816abd201320f8a4f75.img
done
[root@localhost ~]# 
[root@localhost ~]# reboot
Connection closed by foreign host.
[root@localhost ~]# grep Hugepagesize /proc/meminfo
Hugepagesize:    1048576 kB
[root@localhost ~]#

参考资料
Check if CPU supports HugePages & change default hugepage size in RHEL 7

请使用浏览器的分享功能分享到微信等