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 及更低版本。原因上述已说明。

<think>嗯,用户想在Ubuntu系统中禁用显卡驱动。首先,我需要确定用户具体是想禁用哪种显卡驱动。根据提供的引用,Ubuntu默认使用的是开源的nouveau驱动,而用户可能想要禁用它,尤其是在安装专有驱动(如NVIDIA)之前,或者解决兼容性问题。 首先,我应该回忆一下禁用nouveau驱动的步骤。根据引用[4]和[5],禁用nouveau需要编辑blacklist配置文件,比如blacklist.conf或者创建一个新的blacklist-nvidia-nouveau.conf文件。用户可能需要执行命令将nouveau加入黑名单,并设置modeset=0。然后更新initramfs并重启系统。 另外,引用[3]提到禁用nouveau后可能无法开机,需要在内核启动参数中添加nomodeset。这一点很重要,用户可能会遇到这个问题,所以需要提前告知解决方案。 接下来,用户的问题可能涉及到两种情况:一种是暂时禁用当前驱动,比如在安装新驱动之前;另一种是彻底禁用某个驱动。需要分步骤说明,确保用户操作正确。同时,要提醒用户备份重要文件,避免操作失误导致系统问题。 可能还需要检查用户使用的Ubuntu版本,不同版本的配置文件位置或命令可能略有不同,比如Ubuntu 18.04和22.04的步骤相似,但需要确认是否一致。引用[2]提到在Ubuntu16.04中的操作,但较新版本的方法类似,只是文件路径或命令稍有变化。 另外,用户可能禁用驱动后需要验证是否成功,可以通过lsmod | grep nouveau命令查看模块是否加载。如果没有输出,说明禁用成功。 最后,用户可能有更深层的需求,比如安装NVIDIA驱动时遇到问题,所以禁用nouveau是前提步骤。需要确保步骤清晰,避免遗漏关键操作,比如更新initramfs和重启系统,这些步骤容易被忽略,导致配置未生效。 总结步骤应该是:编辑黑名单文件→更新配置→重启→验证。同时,提供遇到启动问题的解决办法,如使用nomodeset参数。确保用户即使遇到问题也能恢复系统。</think>### 分步指南:在 Ubuntu禁用显卡驱动(以禁用开源 Nouveau 驱动为例) #### 步骤 1:编辑黑名单配置文件 打开终端,执行以下命令创建或修改黑名单配置文件: ```bash sudo vim /etc/modprobe.d/blacklist-nvidia-nouveau.conf ``` 在文件中添加以下内容: ``` blacklist nouveau options nouveau modeset=0 ``` 保存并退出[^4][^5]。 #### 步骤 2:更新系统配置 运行以下命令使配置生效: ```bash sudo update-initramfs -u ``` #### 步骤 3:重启系统 ```bash sudo reboot ``` #### 步骤 4:验证是否生效 重启后执行以下命令检查 Nouveau 驱动是否被禁用: ```bash lsmod | grep nouveau ``` 若**无输出**,则表示禁用成功[^4][^5]。 --- ### 常见问题处理 1. **禁用后无法开机** - 在 GRUB 启动菜单选择 Ubuntu 条目,按 `e` 进入编辑模式。 - 找到 `quiet splash` 行,末尾添加 `nomodeset`,按 `Ctrl+X` 启动[^3]。 - 进入系统后,检查显卡驱动配置。 2. **临时禁用驱动** 若需临时禁用(如调试),可在内核启动参数中添加 `nouveau.modeset=0`: ```bash # 编辑 GRUB 配置文件 sudo vim /etc/default/grub # 修改 GRUB_CMDLINE_LINUX_DEFAULT 为: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash nouveau.modeset=0" # 更新 GRUB sudo update-grub ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值