vca*_*rel 9 grub amazon-ec2 centos7
我想在 CentOS 7 EC2 实例上禁用 transparent_hugepage (THP),默认情况下启用:
# cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
# cat /sys/kernel/mm/transparent_hugepage/defrag
[always] madvise never
Run Code Online (Sandbox Code Playgroud)
可以手动更改此设置:
# echo never > /sys/kernel/mm/transparent_hugepage/enabled
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
Run Code Online (Sandbox Code Playgroud)
...但重新启动后更改将丢失。
我试图将echo never [...]指令放入我的rc.local和cloud.cfg文件中,但没有奏效。
我也试图追加设置transparent_hugepage=never到内核行/etc/grub.conf(如解释有),但它并没有更好地工作。
那么...如何在 AWS EC2 实例上运行的 CentOS 7 上禁用 THP?
编辑:更改标题...我需要禁用 THP和THP 碎片整理
vca*_*rel 15
正如@michael-hampton 所指出的,解决方案是在调整中。棘手的部分是vm插件只能配置/sys/kernel/mm/transparent_hugepage/enabled设置。
为了禁用该/sys/kernel/mm/transparent_hugepage/defrag设置,我必须创建一个脚本,该脚本在启动时由配置文件调用。
最后,完整的解决方案是:
第 1 步:创建目录以保存自定义配置文件:
mkdir /etc/tuned/custom
Run Code Online (Sandbox Code Playgroud)
第 2 步:创建配置文件/etc/tuned/custom/tuned.conf:
[main]
include=virtual-guest
[vm]
transparent_hugepages=never
[script]
script=script.sh
Run Code Online (Sandbox Code Playgroud)
请注意,此配置文件继承自virtual-guest,这是我的活动配置文件,实际上看起来适合虚拟化服务器 (EC2)。您可以使用命令查看您的活动配置文件tuned-adm active。如果你好奇,你可以查看预定义配置文件的内容/usr/lib/tuned/
第 3 步:创建脚本/etc/tuned/custom/script.sh:
#!/bin/sh
. /usr/lib/tuned/functions
start() {
echo never > /sys/kernel/mm/transparent_hugepage/defrag
return 0
}
stop() {
return 0
}
process $@
Run Code Online (Sandbox Code Playgroud)
使其可执行:
sudo chmod 755 /etc/tuned/custom/script.sh
Run Code Online (Sandbox Code Playgroud)
第 4 步:激活新配置文件:
tuned-adm profile custom
Run Code Online (Sandbox Code Playgroud)
现在你应该得到:
# cat /sys/kernel/mm/transparent_hugepage/enabled
always madvise [never]
# cat /sys/kernel/mm/transparent_hugepage/defrag
always madvise [never]
Run Code Online (Sandbox Code Playgroud)
重启后会一直存在。
sho*_*hok -2
编辑:上面的回复是错误的,因为目前 sysctl 中缺少透明的大页面旋钮。抱歉产生噪音。
您可以将所需的值放入 中/etc/sysctl.conf。
来自 sysctl.conf(5) 手册页:
SYSCTL.CONF(5) 文件格式 SYSCTL.CONF(5)
姓名
sysctl.conf - sysctl 预加载/配置文件
描述
sysctl.conf 是一个简单文件,包含要由 sysctl 读取和设置的 sysctl 值。语法简单如下:
# 评论
; 评论
代币=价值
请注意,空行将被忽略,标记或值前后的空格也将被忽略,尽管值中可以包含空格。以 # 或 ; 开头的行 被考虑
评论并被忽略。
例子
# sysctl.conf 示例
#
内核.域名 = example.com
; 这个有一个空格,将被写入 sysctl!
kernel.modprobe = /sbin/mod 探针
| 归档时间: |
|
| 查看次数: |
8275 次 |
| 最近记录: |