36.6. transparent huge page の管理
Red Hat Enterprise Linux 9 では、transparent huge page (THP) がデフォルトで有効になっています。ただし、ランタイム設定、TuneD プロファイル、カーネルコマンドラインパラメーター、または systemd ユニットファイルを使用すると、transparent huge page を有効、無効、または madvise に設定できます。
36.6.1. ランタイム設定を使用した transparent huge page の管理 リンクのコピーリンクがクリップボードにコピーされました!
実行時に transparent huge page (THP) を管理して、メモリー使用量を最適化できます。ランタイム設定はシステムの再起動後まで保持されません。
手順
THP のステータスを確認します。
$ cat /sys/kernel/mm/transparent_hugepage/enabledTHP を設定します。
THP を有効にする場合:
$ echo always > /sys/kernel/mm/transparent_hugepage/enabledTHP を無効にする場合:
$ echo never > /sys/kernel/mm/transparent_hugepage/enabledTHP を
madviseに設定する場合:$ echo madvise > /sys/kernel/mm/transparent_hugepage/enabledアプリケーションが必要以上に多くのメモリーリソースを割り当てることを防ぐには、システム全体の THP を無効にし、
madviseシステムコールを通じて THP を明示的に要求するアプリケーションに対してのみ THP を有効にします。注記短期的な割り当てのレイテンシーが低くなると、有効期間の長い割り当てで最適パフォーマンスをすぐに実現するよりも優先度が高くなります。この場合は、THP を有効にしたままでも直接圧縮を無効にできます。
直接圧縮は、huge page の割り当て中の同期メモリー圧縮です。直接圧縮を無効にすると、メモリーの保存は保証されませんが、頻繁なページ障害の発生時にレイテンシーが高くなる可能性が減ります。また、直接圧縮を無効にすると、
madviseで示される仮想メモリー領域 (VMA) の同期圧縮のみが可能になります。ワークロードが THP から著しく異なる場合に、パフォーマンスが低下する点に注意してください。直接圧縮を無効にします。$ echo never > /sys/kernel/mm/transparent_hugepage/defrag
36.6.2. TuneD プロファイルを使用した transparent huge page の管理 リンクのコピーリンクがクリップボードにコピーされました!
TuneD プロファイルを使用して transparent huge page (THP) を管理できます。TuneD プロファイルの設定は、tuned.conf ファイルで指定します。この設定はシステムの再起動後も維持されます。
前提条件
-
TuneDパッケージがインストールされている。 -
TuneDサービスが有効になっている。
手順
アクティブなプロファイルファイルを同じディレクトリーにコピーします。
$ sudo cp -R /usr/lib/tuned/my_profile /usr/lib/tuned/my_copied_profiletune.confファイルを編集します。$ sudo vi /usr/lib/tuned/my_copied_profile/tuned.confTHP を有効にするには、次の行を追加します。
[bootloader] cmdline = transparent_hugepage=alwaysTHP を無効にするには、次の行を追加します。
[bootloader] cmdline = transparent_hugepage=neverTHP を
madviseに設定するには、次の行を追加します。[bootloader] cmdline = transparent_hugepage=madvise
TuneDサービスを再起動します。$ sudo systemctl restart tuned新しいプロファイルをアクティブに設定します。
$ sudo tuned-adm profile my_copied_profile
検証
新しいプロファイルがアクティブであることを確認します。
$ sudo tuned-adm activeTHP の必要なモードが設定されていることを確認します。
$ cat /sys/kernel/mm/transparent_hugepage/enabled
36.6.3. カーネルコマンドラインパラメーターを使用した transparent huge page の管理 リンクのコピーリンクがクリップボードにコピーされました!
カーネルパラメーターを変更することで、起動時に transparent huge page (THP) を管理できます。この設定はシステムの再起動後も維持されます。
前提条件
- システムの root 権限がある。
手順
現在のカーネルコマンドラインパラメーターを取得します。
# grubby --info=$(grubby --default-kernel) kernel="/boot/vmlinuz-4.18.0-553.el8_10.x86_64" args="ro crashkernel=1G-4G:192M,4G-64G:256M,64G-:512M resume=UUID=XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXXX console=tty0 console=ttyS0" root="UUID=XXXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" initrd="/boot/initramfs-4.18.0-553.el8_10.x86_64.img" title="Red Hat Enterprise Linux (4.18.0-553.el8_10.x86_64) 8.10 (Ootpa)" id="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-4.18.0-553.el8_10.x86_64"カーネルパラメーターを追加して THP を設定します。
THP を有効にする場合:
# grubby --args="transparent_hugepage=always" --update-kernel=DEFAULTTHP を無効にする場合:
# grubby --args="transparent_hugepage=never" --update-kernel=DEFAULTTHP を
madviseに設定する場合:# grubby --args="transparent_hugepage=madvise" --update-kernel=DEFAULT
システムを再起動して変更を有効にします。
# reboot
検証
THP のステータスを確認するには、次のファイルを表示します。
# cat /sys/kernel/mm/transparent_hugepage/enabled always madvise [never]# grep AnonHugePages: /proc/meminfo AnonHugePages: 0 kB# grep nr_anon_transparent_hugepages /proc/vmstat nr_anon_transparent_hugepages 0
36.6.4. systemd ユニットファイルを使用した transparent huge page の管理 リンクのコピーリンクがクリップボードにコピーされました!
systemd ユニットファイルを使用すると、システムの起動時に transparent huge page (THP) を管理できます。systemd サービスを作成すると、システムの再起動後も THP 設定が維持されます。
前提条件
- システムの root 権限がある。
手順
-
THP を有効、無効、および
madviseに設定するための新しい systemd サービスファイルを作成します。たとえば、/etc/systemd/system/disable-thp.serviceです。 新しい systemd サービスファイルに次の内容を追加して THP を設定します。
THP を有効にするには、
<new_thp_file>.serviceファイルに次の内容を追加します。[Unit] Description=Enable Transparent Hugepages After=local-fs.target Before=sysinit.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/sh -c 'echo always > /sys/kernel/mm/transparent_hugepage/enabled [Install] WantedBy=multi-user.targetTHP を無効にするには、
<new_thp_file>.serviceファイルに次の内容を追加します。[Unit] Description=Disable Transparent Hugepages After=local-fs.target Before=sysinit.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled [Install] WantedBy=multi-user.targetTHP を
madviseに設定するには、<new_thp_file>.serviceファイルに次の内容を追加します。[Unit] Description=Madvise Transparent Hugepages After=local-fs.target Before=sysinit.target [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/sh -c 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled [Install] WantedBy=multi-user.target
サービスを有効にして起動します。
# systemctl enable <new_thp_file>.service# systemctl start <new_thp_file>.service
検証
THP のステータスを確認するには、次のファイルを表示します。
$ cat /sys/kernel/mm/transparent_hugepage/enabled