GNU/Linux >> Linux の 問題 >  >> Linux

CentOS / RHEL 6 :透過的なヒュージ ページ (THP) を無効にする方法

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) を無効にする方法


Linux
  1. CentOS / RHEL 7 で NetworkManager を無効にする方法

  2. CentOS / RHEL 7 :透過的なヒュージ ページ (THP) を無効にする方法

  3. CentOS / RHEL 6,7 :hugepage の設定方法

  1. CentOS / RHEL 5 で IPv6 を無効にする方法

  2. CentOS/RHEL で lvmetad を無効にする方法

  3. CentOS/RHEL 8 で IPv6 を無効にする方法

  1. CentOS/RHEL 7 で ACPI を無効にする方法

  2. CentOS / RHEL 6:telnet サービスを無効にする方法

  3. CentOS/RHEL 8 で NetworkManager を無効にする方法