RHEL 6 では、Transparent Huge Pages (THP) がデフォルトですべてのアプリケーションに対して有効になっています。カーネルは常に hugepage を使用してメモリ割り当てを満たそうとします。利用可能な hugepage がない場合 (物理的に連続したメモリが利用できないなどの理由で)、カーネルは通常の 4KB ページにフォールバックします。
Explicit Huge Page V/s Transparent Huge Page
システムには次の 2 種類の HugePages があります:Explicit Huge Pages これらは vm.nr_hugepages sysctl パラメータと Transparent Huge Pages によって明示的に割り当てられます カーネルによって自動的に割り当てられます。
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]
1.起動時に THP を無効にするには
1. パラメータ 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
2. 以下の小さなスクリプトをファイル /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
3. 変更を有効にするためにシステムを再起動します。
# shutdown -r now
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 を無効にしてシステムを再起動する必要があります。
トラブルシューティング
Transparent Huge Pages (THP) がまだ無効になっていない場合は、続行して以下のいずれかのオプションを使用してください。
1. tuned/ktune サービスを無効にする
1. 以下のコマンドのいずれかを使用して THP を再度有効にする場合は、調整されたサービスを無効にします。
# service tuned stop # chkconfig tuned off # service ktune stop # chkconfig ktune off
または
# tuned-adm off注意 注:tuned-adm コマンドは、すべての設定を調整開始前の状態に戻し、起動時に調整サービスが実行されないようにします。
2. 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 を無効にして、カスタマイズされた調整プロファイルを作成します
1. 現在実行中のプロファイルのカスタマイズ バージョンを作成します。カスタマイズされたバージョンは THP を無効にします。アクティブなプロファイルを見つけて、コピーを作成します。次の例では、現在スループットパフォーマンス プロファイルを使用しています:
# tuned-adm active Current active profile: throughput-performance Service tuned: enabled, running Service ktune: enabled, running
2. 既存のプロファイルから複製プロファイルを作成します。新しいプロファイルを使用して THP を無効にします。これを行うには、現在のプロファイル ディレクトリから新しく作成されたプロファイル ディレクトリにすべてのコンテンツをコピーします。
# cd /etc/tune-profiles/ # cp -r /etc/tune-profiles/throughput-performance /etc/tune-profiles/nothp_profile
3. 新しいプロファイルで THP を無効にし、新しいプロファイルを有効にします。以下の行を変更してください:
From :
# vi /etc/tune-profiles/nothp_profile/ktune.sh set_transparent_hugepages always
宛先 :
# vi /etc/tune-profiles/nothp_profile/ktune.sh set_transparent_hugepages never
4. 変更を有効にするために、新しいプロファイルを有効にします。
# tuned-adm profile nothp_profile
# cat /sys/kernel/mm/redhat_transparent_hugepage/enabled always [never]CentOS / RHEL 7 :トランスペアレント ヒュージ ページ (THP) を無効にする方法