暂无图片
暂无图片
2
暂无图片
暂无图片
1
暂无图片

PostgreSQL hugepage配置及计算方法

原创 贾勇智 2022-06-17
1323

PostgreSQL 一般共享内存shared_buffers较大,会导致内存PageTables变大,不仅挤占内存,还因地址条目过多,CPU寻址耗时增加,影响CPU性能。那么开启PostgreSQL大页内存的方法是什么呢?
下面简单介绍开启大页内存过程:
首先,先以非大页启动:
postgresql.conf :

huge_pages = off

复制

查看postgresql使用内存大小:

#查看进程ID
head -1   $PGDATA/postmaster.pid
8182

#查看当前进程点用内容大小:
[postgres@pg14 data]$ pmap 8182 |awk '/rw-s/ && /zero/ {print $2}'
213696K

#查看页大小
[postgres@pg14 ~]$ cat /proc/meminfo |grep Hugepagesize
Hugepagesize:       2048 kB

#计算所需页数
213696/2048 = 104.34   向上取大点:110


# 在操作系统上开启大页
vi /etc/sysctl.conf    
vm.nr_hugepages = 110
#运行sysctl -p 生效,如不生效,生启操作系统。

#操作系统关闭透明大页和NUMA 【可选】
[postgres@pg14 ~]$ cat /etc/default/grub 
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos_myhost/root rd.lvm.lv=centos_myhost/swap rhgb quiet numa=off transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"

#生效
grub2-mkconfig -o /boot/grub2/grub.cfg

#启动数据库,检查PostgreSQL大页是否开启
head -1   $PGDATA/postmaster.pid
8183
[postgres@pg14 data]$ pmap 8183 |awk '/rw-s/ && /zero/ {print $2}'
#pmap 没有输出结果表示成功,此时执行,
cat /proc/meminfo
...
HugePages_Total:     110
HugePages_Free:       69
HugePages_Rsvd:       64
HugePages_Surp:        0
Hugepagesize:       2048 kB
...
可见大页已经使用。

复制
最后修改时间:2022-06-17 09:47:00
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论

董小姐
暂无图片 暂无图片
1年前
评论
暂无图片 0
照着步骤做pmap 8183 |awk '/rw-s/ && /zero/ {print $2}'还是有输出结果
1年前
暂无图片 点赞
评论