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/enabled
THP を設定します。
THP を有効にする場合:
$ echo always > /sys/kernel/mm/transparent_hugepage/enabled
THP を無効にする場合:
$ echo never > /sys/kernel/mm/transparent_hugepage/enabled
THP を
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
関連情報
-
システム上の
madvise(2)
man ページ
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_profile
tune.conf
ファイルを編集します。$ sudo vi /usr/lib/tuned/my_copied_profile/tuned.conf
THP を有効にするには、次の行を追加します。
[bootloader] cmdline = transparent_hugepage=always
THP を無効にするには、次の行を追加します。
[bootloader] cmdline = transparent_hugepage=never
THP を
madvise
に設定するには、次の行を追加します。[bootloader] cmdline = transparent_hugepage=madvise
TuneD
サービスを再起動します。$ sudo systemctl restart tuned
新しいプロファイルをアクティブに設定します。
$ sudo tuned-adm profile my_copied_profile
検証
新しいプロファイルがアクティブであることを確認します。
$ sudo tuned-adm active
THP の必要なモードが設定されていることを確認します。
$ 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=DEFAULT
THP を無効にする場合:
# grubby --args="transparent_hugepage=never" --update-kernel=DEFAULT
THP を
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.target
THP を無効にするには、
<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.target
THP を
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
36.6.5. 関連情報
- TuneD プロファイルをセットアップするか、定義済みの TuneD プロファイルを使用することで、transparent huge page (THP) を無効にすることもできます。RHEL とともに配布される TuneD プロファイル と 利用可能な TuneD プラグイン を参照してください。