当前位置: 代码迷 >> 综合 >> 大页(huge pages) 系列四 ---Transparent HugePages
  详细解决方案

大页(huge pages) 系列四 ---Transparent HugePages

热度:85   发布时间:2023-12-19 16:42:54.0

从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


  相关解决方案