什么是大页内存?
Linux标准内存页的大小是4KB。应用程序访问的是内存的虚拟地址,而内存的虚拟地址要通过操作系统映射到物理内存。随着硬件的发展,操作系统的内存越来越大,物理内存和虚拟内存的映射表也会越来越大,进而影响系统的性能。
为了解决这个问题,人们考虑使用大页内存(Huge Page)来减小映射表。所谓的大页内存就是用一块是标准内存页大小N倍的内存看成一个内存页。Huge Page通常的大小可以是2M、4M、16M。
要在Informix数据库上使用Huge Page,需要在操作系统和数据库上都进行设置,具体方法如下:
操作系统的设置步骤
1、编辑/etc/security/limits.conf文件
* soft memlock 614400 * hard memlock 614400 |
614400KB=400MB*1024+100*2048KB(100*2048用于系统保留)
重启主机
验证是否生效:
ulimit -l #看是否修改生效
2、查看当前大页大小
#cat /proc/meminfo |grep Hugepage Hugepagesize: 2048 kB #当前大页大小是2MB |
3、从物理内存中设置分配多少个大页
#vi /etc/sysctl.conf vm.nr_hugepages = 200 #从OS中申请200个大页,每页2MB #sysctl -p #重新加载配置文件 |
验证是否生效:
#cat /proc/meminfo |grep Huge #可以看到分配的大页情况
HugePages_Total: 197
HugePages_Free: 78
Informix数据库设置
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 |