故障排除
如果透明大页面 (THP) 仍未禁用,请继续并使用以下选项之一。
1.禁用tuned/ktune服务
- 如果使用以下任一命令重新启用 THP,请禁用调整后的服务。
# service tuned stop # chkconfig tuned off # service ktune stop # chkconfig ktune off
或者
# tuned-adm off
注意:tuned-adm 命令会将所有设置恢复到调整启动之前的设置,并禁止在启动时运行调整服务。
- 验证 ktune 和tuned 服务被禁用以在启动时启动:
# chkconfig --list |egrep -i "ktune|tuned" ktune 0:off 1:off 2:off 3:off 4:off 5:off 6:off tuned 0:off 1:off 2:off 3:off 4:off 5:off 6:off
2. 创建一个禁用 THP 的自定义调整配置文件
- 我们将为当前运行的配置文件创建一个定制版本。
定制版本将禁用 THP。
找出哪个配置文件处于活动状态,创建一个副本。
在以下示例中,我们目前使用吞吐量性能配置文件:
# tuned-adm active Current active profile: throughput-performance Service tuned: enabled, running Service ktune: enabled, running
- 从现有配置文件创建重复配置文件。
我们将使用新配置文件禁用 THP。
为此,将当前配置文件目录中的所有内容复制到新创建的配置文件目录中。
# cd /etc/tune-profiles/ # cp -r /etc/tune-profiles/throughput-performance /etc/tune-profiles/nothp_profile
- 我们现在将在新配置文件中禁用 THP 并激活新配置文件。
更改如下所示的行:
将
# vi /etc/tune-profiles/nothp_profile/ktune.sh set_transparent_hugepages always
修改成:
# vi /etc/tune-profiles/nothp_profile/ktune.sh set_transparent_hugepages never
- 激活新配置文件以使更改生效。
# tuned-adm profile nothp_profile
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled always [never]
2.在运行时禁用THP
运行以下命令以禁用 THP,而无需重新启动系统。
# echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled # echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
注意:运行上述命令将仅停止新 THP 的创建和使用。
在运行上述命令时创建和使用的 THP 不会被分解为常规内存页。
要完全摆脱 THP,系统应该在启动时禁用 THP 的情况下重新启动。
显式大页面( Explicit Huge Pages) VS 透明大页面 (Transparent Huge Pages)
系统中可以有两种类型的 HugePages:通过 vm.nr_hugepages sysctl 参数显式分配的显式巨型页面和由内核自动分配的透明巨型页面。
www. On IT Road .com
1.在启动时禁用THP
- 将参数 transparent_hugepage=never 添加到 /etc/grub.conf 中的内核命令行:
# vim /etc/grub.conf default=0 timeout=5 splashimage=(hd0,0)/grub/splash.xpm.gz hiddenmenu title Red Hat Enterprise Linux 6 (2.6.32-504.el6.x86_64) root (hd0,0) kernel /vmlinuz-2.6.32-504.el6.x86_64 ro root=/dev/mapper/vg_os-lv_os rd_NO_LUKS LANG=en_US.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_LVM_LV=vg_os/lv_os KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet transparent_hugepage=never initrd /initramfs-2.6.32-504.el6.x86_64.img
- 将下面给出的小脚本添加到文件 /etc/rc.d/rc.local 中。
# vi /etc/rc.d/rc.local .... if test −f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi if test −f /sys/kernel/mm/transparent_hugepage/defrag; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi
- 重新启动系统以使更改生效。
# shutdown -r now
在 RHEL 6 中,所有应用程序默认启用透明大页面 (THP)。
内核将始终尝试使用大页来满足内存分配。
如果没有可用的大页面(例如由于物理连续内存不可用),内核将回退到常规的 4KB 页面。
验证是否启用了 THP
CentOS/RHEL 7 上的“tuned.service”默认将 transparent_hugepage 设置为 always。
即使在 grub 内核命令行中禁用它,调整后的服务也会在启动期间将其设置为“始终”。
文件 /sys/kernel/mm/redhat_transparent_hugepage/enabled 给出了 THP 的当前状态(启用/禁用)。
/sys/kernel/mm/redhat_transparent_hugepage/enabled 的值可以是以下之一:
always - always use THP never - disable THP
下面的命令输出确认系统上已启用或者禁用 THP。
启用 THP 时的输出
# cat /sys/kernel/mm/transparent_hugepage/enabled [always] madvise never
THP 禁用时的输出
# cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]
日期:2020-09-17 00:11:57 来源:oir作者:oir