Red Hat Enterprise Linux 6 で THP (transparent hugepages) を無効にしても反映されない
Environment
- Red Hat Enterprise Linux (RHEL) 6
- transparent hugepages (THP)
- tuned
- ktune
Issue
- /boot/grub/grub.conf ファイルのカーネルコマンドラインに "transparent_hugepage=never" を追加しても、transparent hugepages (THP) を無効にすることができません。
たとえば、以下のようになります。
# grep -i never /boot/grub/grub.conf
kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=a216d1e5-884f-4e5c-859a-6e2e2530d486 rhgb quiet transparent_hugepage=never
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
[always] never
# grep -i AnonHugePages /proc/meminfo
AnonHugePages: 206848 kB
Resolution
THP を無効にしたカスタマイズの tuned プロファイルを作成する
ここでは、現在実行中のプロファイルをカスタマイズしたバージョンを作成します。カスタマイズしたバージョンは THP を無効にします。
どのプロファイルがアクティブかを特定し、コピーを作成します。以下の例では、throughput-performance
プロファイルが使用されています。
$ tuned-adm active
Current active profile: throughput-performance
Service tuned: enabled, running
Service ktune: enabled, running
$ cd /etc/tune-profiles/
$ cp -r throughput-performance throughput-performance-no-thp
新しいプロファイルで THP を無効にし、新しいプロファイルをアクティベートします。
$ sed -ie 's,set_transparent_hugepages always,set_transparent_hugepages never,' \
/etc/tune-profiles/throughput-performance-no-thp/ktune.sh
$ grep set_transparent_hugepages /etc/tune-profiles/throughput-performance-no-thp/ktune.sh
set_transparent_hugepages never
$ tuned-adm profile throughput-performance-no-thp
$ cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
always [never]
また、transparent_hugepage=never
パラメーターを /etc/grub.conf
ファイルのカーネル行に追加して、システムを起動したときにアプリケーションが THP を要求しないことを確認する必要があります。
kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=a216d1e5-884f-4e5c-859a-6e2e2530d486 rhgb quiet transparent_hugepage=never
システムを再起動してください。
その他の解決方法: tuned
および ktune
サービスを無効にする
これにより、tuned または ktune サービスが無効になります。
たとえば、以下のようになります。
# service tuned stop
# chkconfig tuned off
# service ktune stop
# chkconfig ktune off
または、
# tuned-adm off
注意: tuned-adm
コマンドを実行すると、すべての設定を tuned を開始する前の状態に戻し、ブート時にチューニングサービスを無効にします。
- /boot/grub/grub.conf ファイルのカーネルコマンドラインに "transparent_hugepage=never" を追加します。
たとえば、以下のようになります。
kernel /boot/vmlinuz-2.6.32-358.el6.x86_64 ro root=UUID=a216d1e5-884f-4e5c-859a-6e2e2530d486 rhgb quiet transparent_hugepage=never
- サーバーを再起動して、変更を反映させます。
たとえば、以下のようになります。
# reboot
Root Cause
ktune
サービスは、デフォルトで、すべてのプロファイルのtransparent hugepages
(THP) を有効にします。
# cat /etc/tune-profiles/enterprise-storage/ktune.sh
#!/bin/sh
./etc/tune-profiles/functions
start() {
set_cpu_governor performance
set_transparent_hugepages always <<<----
disable_disk_barriers
multiply_disk_readahead 4
return 0
}
stop() {
restore_cpu_governor
restore_transparent_hugepages
enable_disk_barriers
restore_disk_readahead
return 0
}
process $@
- tuned プロファイルが有効な場合は、起動時に init.d サービスから、 またはコマンドラインで手動で、transparent hugepages (THP) を再度有効にできます。
Diagnostic Steps
- ktune および tuned サービスを確認します。
# chkconfig --list |egrep -i "ktune|tuned"
ktune 0:off 1:off 2:off 3:on 4:on 5:on 6:off
tuned 0:off 1:off 2:on 3:on 4:on 5:on 6:off
transparent_hugepage=never
を/boot/grub/grub.conf
に追加してシステムを再起動した際、/sys/kernel/mm/transparent_hugepage/defrag
オプションが有効のままになっている可能性があります (つまり、always
に設定) が、この場合、THP が無効であるため安全に無視できます。THP defrag は有効にはなりません。
cat /sys/kernel/mm/redhat_transparent_hugepage/enabled
always [never]
cat /sys/kernel/mm/transparent_hugepage/defrag
[always] never
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments