40.3.2. systemd サービスユニットを使用した HugeTLB を設定


systemd サービスユニットを使用して、ユーザー空間のブートプロセス中に HugeTLB ページを設定できます。この方法では、カーネルが初期化された後、ほとんどのユーザー空間サービスが開始される前に、大きなメモリーページを予約できます。この方法は、カーネルコマンドラインで設定する方法ほど早い段階で行われるものではありませんが、システムの運用中にアプリケーションが必要な huge page にアクセスできるようにするには効果的です。

前提条件

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

手順

  1. /usr/lib/systemd/system/ ディレクトリーに hugetlb-gigantic-pages.service という新しいファイルを作成し、以下の内容を追加します。

    [Unit]
    Description=HugeTLB Gigantic Pages Reservation
    DefaultDependencies=no
    Before=dev-hugepages.mount
    ConditionPathExists=/sys/devices/system/node
    ConditionKernelCommandLine=hugepagesz=1G
    
    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=/usr/lib/systemd/hugetlb-reserve-pages.sh
    
    [Install]
    WantedBy=sysinit.target
  2. /usr/lib/systemd/ ディレクトリーに hugetlb-reserve-pages.sh という新しいファイルを作成し、以下の内容を追加します。

    #!/bin/sh
    
    nodes_path=/sys/devices/system/node/
    if [ ! -d $nodes_path ]; then
        echo "ERROR: $nodes_path does not exist"
        exit 1
    fi
    
    reserve_pages()
    {
        echo $1 > $nodes_path/$2/hugepages/hugepages-1048576kB/nr_hugepages
    }
    
    reserve_pages <number_of_pages> <node>

    <number_of_pages> は、予約する 1 GB ページの数に置き換えます。<node> は、これらのページを予約するノード名に置き換えます。たとえば、node0 に 2 つの 1 GB ページを予約し、node1 に 1 つの 1 GB ページを予約するには、<number_of_pages> を、node0 の場合は 2 に、node1 の場合は 1 に置き換えます。

  3. 実行可能なスクリプトを作成します。

    # chmod +x /usr/lib/systemd/hugetlb-reserve-pages.sh
  4. 初期のブート予約を有効にします。

    # systemctl enable hugetlb-gigantic-pages.service
    注記
    • 任意のタイミングで nr_hugepages に書き込みを行うことにより、ランタイム時にさらに 1 GB ページを予約してみることができます。ただし、メモリーの断片化による失敗を防ぐために、起動プロセスの早い段階で 1 GB のページを予約してください。
    • 静的 Huge Page を確保することで、システムで利用可能なメモリー量を効果的に減らすことができます。ただし、メモリーの全容量を適切に使用できなくなります。予約済み huge page のプールのサイズが適切に設定されていると、それを使用するアプリケーションにメリットがあります。しかし、予約済み huge page のプールが大きすぎる場合や使用されていない場合、最終的にシステム全体のパフォーマンスに悪影響が発生します。予約済み huge page プールを設定するときは、システムがメモリー全容量を適切に使用できることを確認してください。
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

会社概要

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

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

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

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

Legal Notice

Theme

© 2026 Red Hat
トップに戻る