GBase 8s
运维管理
文章

大页内存使用的设置方法

GBase社区管理员
发表于2023-05-16 10:03:46105次浏览0个评论

什么是大页内存?

Linux标准内存页的大小是4KB。应用程序访问的是内存的虚拟地址,而内存的虚拟地址要通过操作系统映射到物理内存。随着硬件的发展,操作系统的内存越来越大,物理内存和虚拟内存的映射表也会越来越大,进而影响系统的性能。

为了解决这个问题,人们考虑使用大页内存(Huge Page)来减小映射表。所谓的大页内存就是用一块是标准内存页大小N倍的内存看成一个内存页。Huge Page通常的大小可以是2M、4M、16M。

要在数据库上使用Huge Page,需要在操作系统和数据库上都进行设置,具体方法如下:

操作系统的设置步骤

1、编辑/etc/security/limits.conf文件

614400KB=400MB*1024+100*2048KB(100*2048用于系统保留)

重启主机

验证是否生效:

ulimit -l             #看是否修改生效

2、查看当前大页大小

 

#vi /etc/sysctl.conf
vm.nr_hugepages = 200             #从OS中申请200个大页,每页2MB
#sysctl -p                        #重新加载配置文件

验证是否生效:

#cat /proc/meminfo |grep Huge    #可以看到分配的大页情况

HugePages_Total:     197

HugePages_Free:       78

数据库设置

1、修改内存驻留

RESIDENT     -1|N

2、设置环境变量

export IFX_LARGE_PAGES=1

3、启动数据库,验证是大页内存是否生效

21:31:42 Requested shared memory segment size rounded from 110629KB to 112640KB
21:31:42  Shared memory segment will use huge pages.
21:31:42  Segment locked: addr=0x46600000, size=115343360
21:31:42  Successfully added a bufferpool of page size 2K.

21:31:42  Requested shared memory segment size rounded from 82459KB to 83968KB
21:31:42  Shared memory segment will use huge pages.
21:31:42  Segment locked: addr=0x4d400000, size=85983232
21:31:42  Successfully added a bufferpool of page size 8K.

21:31:48  Shared memory segment will use huge pages.
21:31:48 Dynamically allocated new virtual shared memory segment (size 8192KB)
21:31:48  Memory sizes:resident:6144 KB, virtual:237568 KB, no SHMTOTAL limit
21:31:48  Segment locked: addr=0x52600000, size=8388608
评论已关闭