1.什么是Transparent HugePages?
Transparent HugePages是RHEL6的新特性。
为了提升性能,Kernel会将程序缓存在内存中,每页内存以2M为单位。
想要有效的使用THP,kernel要在内存中找到一系列连续的物理内存来满足需求,也可能会对齐。
为了达到这个效果,系统新加了一个khugepaged进程,这个进程会偶尔尝试把正在使用的较小页面换到hugepage中。这样就能使hugepage使用达到最大化。
2.如何关闭THP
尽管THP的本意是为提升性能,但某些数据库厂商还是建议直接关闭THP(比如说Oracle、MongoDB等),否则可能导致性能下降,内存锁,甚至系统重启等问题。
我们再使用mongodb时,登录会经常看到下图提示
翻阅了些资料,还是获得了些答案,临时解决方案是在/etc/rc.local中加入如下两行
echo never > /sys/kernel/mm/transparent_hugepage/enabled echo never > /sys/kernel/mm/transparent_hugepage/defrag
因为每次重新之前的修改都会失效,所以直接添加到开机启动自动修改