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) を管理して、メモリー使用量を最適化できます。ランタイム設定はシステムの再起動後まで保持されません。

手順

  1. THP のステータスを確認します。

    $ cat /sys/kernel/mm/transparent_hugepage/enabled
  2. 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 サービスが有効になっている。

手順

  1. アクティブなプロファイルファイルを同じディレクトリーにコピーします。

    $ sudo cp -R /usr/lib/tuned/my_profile /usr/lib/tuned/my_copied_profile
  2. 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
  3. TuneD サービスを再起動します。

    $ sudo systemctl restart tuned
  4. 新しいプロファイルをアクティブに設定します。

    $ sudo tuned-adm profile my_copied_profile

検証

  1. 新しいプロファイルがアクティブであることを確認します。

    $ sudo tuned-adm active
  2. THP の必要なモードが設定されていることを確認します。

    $ cat /sys/kernel/mm/transparent_hugepage/enabled

36.6.3. カーネルコマンドラインパラメーターを使用した transparent huge page の管理

カーネルパラメーターを変更することで、起動時に transparent huge page (THP) を管理できます。この設定はシステムの再起動後も維持されます。

前提条件

  • システムの root 権限がある。

手順

  1. 現在のカーネルコマンドラインパラメーターを取得します。

    # 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"
  2. カーネルパラメーターを追加して 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
  3. システムを再起動して変更を有効にします。

    # 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 権限がある。

手順

  1. THP を有効、無効、および madvise に設定するための新しい systemd サービスファイルを作成します。たとえば、/etc/systemd/system/disable-thp.service です。
  2. 新しい 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
  3. サービスを有効にして起動します。

    # systemctl enable <new_thp_file>.service
    # systemctl start <new_thp_file>.service

検証

  • THP のステータスを確認するには、次のファイルを表示します。

    $ cat /sys/kernel/mm/transparent_hugepage/enabled

36.6.5. 関連情報

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.