菜鸟笔记
提升您的技术认知

透明大页(huge pages) ---Transparent HugePages

从RedHat 6, OEL 6, SLES 11 and UEK2 kernels 开始,系统缺省会启用 Transparent HugePages  :用来提高内存管理

的性能透明大页(Transparent HugePages )和之前版本中的大页功能上类似,主要的区别是:Transparent HugePages 可以实时配置,

不需要重启才能生效配置;

透明大页(Transparent HugePages )主要是利用khugepaged thread,而以前的 大页是通过在系统启动时来预分配实现;

但是,oracle 官方不建议我们使用RedHat 6, OEL 6, SLES 11 and UEK2 kernels 后的 透明大页(Transparent HugePages ),

因为透明大页(Transparent HugePages ) 存在一些问题:

1.在RAC环境下 透明大页(Transparent HugePages )会导致异常节点重启,和性能问题;

2.在单机环境中,透明大页(Transparent HugePages ) 也会导致一些异常的性能问题;

----以红帽6.0 为例:

方法一:

缺省启用:[always] --- 表明启用了透明大页

[root@rhel-6 redhat_transparent_hugepage]# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled 

[always] madvise never

禁用状态:

[root@rhel-6 redhat_transparent_hugepage]# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled 

always madvise [never]

方法二:

[root@rhel-6 redhat_transparent_hugepage]#  grep AnonHugePages /proc/meminfo

AnonHugePages:    143360 kB

如果 AnonHugePages > 0 同样表示启用了透明大页;

----如何禁用透明大页

方法一(优先选择):

在 /etc/grub.conf 中添加一行记录:

transparent_hugepage=never

然后重启

方法二:

配置/etc/rc.local 然后重启服务器:

if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then

   echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled

fi

if test -f /sys/kernel/mm/redhat_transparent_hugepage/defrag; then

   echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag

fi