ubuntu 禁用透明大页_禁用大内存页面

Transparent Huge Pages (THP)是一种Linux内存管理系统,可以通过使用更大的内存页来减少对带有大量内存的机器Translation Lookaside Buffer (TLB)的开销。

然而,数据库工作负载通常在THP上表现不佳,因为它们往往是稀疏而非连续性的内存访问模式。所以你应该禁用Linux机器上的THP,以确保Redis、ORACLE、MariaDB、MongoDB等数据库的最佳性能。

Transparent Huge Pages是在CentOS/RedHat 6.0中引入的优化,从CentOS 7 版本开始,该特性默认启用,其目的是减少大量内存的系统的开销。然而,由于某些数据库使用内存的方式,这个特性实际上弊大于利,因为内存访问很少是连续的。

下面介绍如何禁用RedHat/CentOS 6/7上的透明巨大页面。对于其他系统,请查阅供应商的文档。

生产环境:

$ hostnamectl

...

Operating System: CentOS Linux 7 (Core)

CPE OS Name: cpe:/o:centos:centos:7.4 1708

Kernel: Linux 3.10.0-693.2.2.el7.x86_64

Architecture: x86-64

先查看 THP 状态:

$ cat /sys/kernel/mm/transparent_hugepage/enabled

[always] madvise never

$ cat /sys/kernel/mm/transparent_hugepage/defrag

[always] madvise never

状态显示:启用。

创建脚本:

$ vim /etc/init.d/disable-transparent-hugepages

添加以下内容:

#!/bin/bash

### BEGIN INIT INFO

# Provides: disable-transparent-hugepages

# Required-Start: $local_fs

# Required-Stop:

# X-Start-Before: mongod mongodb-mms-automation-agent

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: Disable Linux transparent huge pages

# Description: Disable Linux transparent huge pages, to improve

# database performance.

### END INIT INFO

case $1 in

start)

if [ -d /sys/kernel/mm/transparent_hugepage ]; then

thp_path=/sys/kernel/mm/transparent_hugepage

elif [ -d /sys/kernel/mm/redhat_transparent_hugepage ]; then

thp_path=/sys/kernel/mm/redhat_transparent_hugepage

else

return 0

fi

echo 'never' > ${thp_path}/enabled

echo 'never' > ${thp_path}/defrag

re='^[0-1]+$'

if [[ $(cat ${thp_path}/khugepaged/defrag) =~ $re ]]

then

# RHEL 7

echo 0 > ${thp_path}/khugepaged/defrag

else

# RHEL 6

echo 'no' > ${thp_path}/khugepaged/defrag

fi

unset re

unset thp_path

;;

esac

保存并退出!

给予该文件可执行权限,命令如下:

$ chmod 755 /etc/init.d/disable-transparent-hugepages

加入开机自启动并重启系统:

$ systemctl enable disable-transparent-hugepages

$ systemctl start disable-transparent-hugepages

$ sudo reboot

再次查看THP状态:

$ cat /sys/kernel/mm/transparent_hugepage/enabled

always madvise [never]

$ cat /sys/kernel/mm/transparent_hugepage/defrag

always madvise [never]

状态显示:已经禁用。

到此 禁用 Transparent Huge Pages 的目的已经实现。

注意:该教程不适用于Debian/Ubuntu或CentOS/RedHat 5 及更低版本。原因上述已说明。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值