Centos7禁用THP(Transparent HugePages)

开启THP精髓是提高内存分配效率,减少CPU SYS开销。

1、首先检查THP的启用状态:

[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never

如果输出结果为[always]表示透明大页启用了。[never]表示透明大页禁用、[madvise]表示(只在MADV_HUGEPAGE标志的VMA中使用THP
这个状态就说明都是启用的。

2、在运行时禁用THP(Transparent HugePages)
运行以下命令即时禁用THP,该命令适用于其它Linux系统:

echo never > /sys/kernel/mm/transparent_hugepage/enabled
echo never > /sys/kernel/mm/transparent_hugepage/defrag

3、永久禁用THP(Transparent HugePages )
编辑rc.local文件:

[root@localhost ~]# vim /etc/rc.d/rc.local 

增加下列内容:

if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo never > /sys/kernel/mm/transparent_hugepage/enabled
fi
if test -f /sys/kernel/mm/transparent_hugepage/defrag; then
echo never > /sys/kernel/mm/transparent_hugepage/defrag
fi

4、保存退出,然后赋予rc.local文件执行权限:

[root@localhost ~]# chmod +x /etc/rc.d/rc.local 

5、最后重启系统,以后再检查THP应该就是被禁用了

[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
[root@localhost ~]# cat /sys/kernel/mm/transparent_hugepage/defrag 
always madvise [never]

6、另一种方式查看是否被禁用看是否为0

cat /proc/sys/vm/nr_hugepages
sysctl vm.nr_hugepages

查看使用的内存

cat /proc/meminfo && grep AnonHugePages /proc/meminfo 

确认是否降下来
官方参考1
tidb参考2

对于数据库应用,不推荐使用 THP.主要的原因是这类数据库大部分访问内存的方式是分散的,并不是访问连续的页面,而这样的访问模式,
就会造成内存的碎片化.访问的page 不也不是大量连续性的. 并且在不启用THP 时申请4KB的内存时,
LINUX会分配相应的内存给应用, 但如果是在系统级别启用了THP,则类似数据库申请内存时,即使申请的值是4KB ,
但分配是会以大于4KB例如 2MB 来进行分配,这样数据库申请使用内存的方式也会出现问题,和相关的损耗.

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值