在本页面
透明大页面(THP)是一种Linux内存管理系统,它通过使用较大的内存页面来减少具有大量内存的计算机上的转换后备缓冲区(TLB)查找的开销。
但是,数据库工作负载在启用THP的情况下通常表现不佳,因为它们往往具有稀疏而不是连续的内存访问模式。在Linux上运行MongoDB时,应禁用THP以获得最佳性能。
为确保在mongod
启动之前禁用THP ,应为平台的初始化系统创建一个服务文件,该文件在引导时禁用THP。下面提供了有关systemd和System V初始化系统的说明。
此外,对于使用和性能配置文件的RHEL / CentOS系统,还必须创建一个自定义配置文件。ktune
tuned
tuned
要创建禁用THP的服务文件,您将使用平台的内置初始化系统。Linux的最新版本倾向于使用systemd(使用systemctl
命令),而Linux的较早版本倾向于使用System V init(使用service
命令)。有关更多信息,请参阅您的操作系统的文档。
使用适合您平台的初始化系统:
systemd
单位文件。¶在以下位置创建以下文件/etc/systemd/system/disable-transparent-huge-pages.service
:
注意
红帽企业版Linux的某些版本以及可能的其他基于红帽的派生版本对THP enabled
文件使用不同的路径:
检查以查看系统上正在使用哪个路径,并相应地更新disable-transparent-huge-pages.service
文件。
注意
在4.2版之前,MongoDB还会检查THP 碎片整理
设置,如果启用了碎片整理,则会显示启动警告。只要在systemd
单位文件中禁用了THP本身,MongoDB便不会受到碎片整理设置的影响。但是,为避免出现此消息,可以在现有
语句之后,never
通过将以下附加行添加到systemd
单元文件中来
将defrag设置为
ExecStart
:
如果在Red Hat或类似设备上,则defrag
文件的路径可能不同。有关更多详细信息,请参见上面的注释,并相应地更新disable-transparent-huge-pages.service
文件。
systemd
单元文件。¶运行以下命令以重新加载systemd
单元文件以
disable-transparent-huge-pages.service
供使用:
手动启动服务一次,以确保已更改了适当的THP设置:
[never]
通过运行以下命令,验证是否已成功将THP设置为:
在Red Hat Enterprise Linux和其他可能的基于Red Hat的派生产品上,您可能需要使用以下内容:
为确保每次系统启动时都应用此设置,请运行以下命令:
如果您正在使用RHEL / CentOS tuned
或ktune
在
RHEL / CentOS上使用,则现在还必须创建一个自定义tuned
配置文件。
init.d
脚本。¶在以下位置创建以下文件/etc/init.d/disable-transparent-hugepages
:
注意
在4.2版之前,MongoDB还会检查THP 碎片整理
设置,如果启用了碎片整理,则会显示启动警告。只要在init.d
脚本中禁用了THP本身,MongoDB便不会受到碎片整理设置的影响。但是,为避免出现此消息,您可以never
通过init.d
在语句前添加以下行到脚本中来将defrag设置为
:unset thp_path
运行以下命令以使脚本可执行:
手动运行脚本一次,以确保已更改了适当的THP设置:
[never]
通过运行以下命令,验证是否已成功将THP设置为:
在Red Hat Enterprise Linux和其他可能的基于Red Hat的派生产品上,您可能需要使用以下内容:
为确保每次系统引导时都应用此设置,请为您的Linux发行版运行以下命令:
分配 | 命令 |
---|---|
Ubuntu和Debian | sudo update-rc.d disable-transparent-hugepages defaults
|
SUSE | sudo insserv /etc/init.d/disable-transparent-hugepages
|
Red Hat,CentOS,Amazon Linux及其衍生版本 | sudo chkconfig --add disable-transparent-hugepages
|
如果您正在使用RHEL / CentOS tuned
或ktune
在
RHEL / CentOS上使用,则现在还必须创建一个自定义tuned
配置文件。
tuned
和ktune
¶重要
如果使用tuned
或ktune
,则在创建上面的服务文件之后,还必须执行本节中的步骤。
tuned
并且ktune
是动态内核调整工具,可以影响系统上透明的大页面设置。如果
在运行时在RHEL / CentOS系统上使用
tuned
/ ktune
,则必须创建一个自定义
配置文件以确保THP保持禁用状态。mongod
tuned