巨页

陈磊


2.6版本的内核支持两种虚拟页的大小:

传统的4KB页和16MB页。


巨页的使用主要是为了改进那些对内存访问敏感的程序的性能。

使用巨页支持之后,应用程序就可以将自己的文本段和数据段放在一个巨页(16MB)中运行了,而不用修改任何代码。

性能的改进是由于降低了TLB(translation lookaside buffer)的缺页率。这是因为TLB可以映射一个更大的虚拟内存范围了。

巨页还可以改进内存预取的效率:它不用根据4KB的边界来反复执行预取操作了。

配置方法:

1、cat /proc/meminfo |grep Huge
HugePages_Total:  0
Hugeages_Free:   0
HugePages_Rsvd:  0
Hugepagessize:   2048KB
2、vi /etc/sysctl.conf
在文件最后添加
vm.nr_hugepages=70000(设定巨页是140G,根据1中显示Hugepagessize,用140G/Hugepagessize,这个参数单位为MB)
vm.shmmax=254*1024*1024*1024(假设系统共有内存254G,换算成B,这要写最后254*1024*1024*1024的计算结果)
vm.shmall=254*1024*1024*1024/4096(vm.shmmax/4096,其中4096是页大小)
3、vi /etc/security/limits.conf
在文件最后添加(oracle是用户名)
oracle soft memlock unlimited
orcale hard memlock unlimited