スキップしてコンテンツを表示

Amazon EC2 Linux インスタンスで HugePages を設定する方法を教えてください。

所要時間2分
0

Amazon Elastic Compute Cloud (Amazon EC2) の Linux インスタンスで HugePages を設定したいと考えています。

解決策

注: HugePages を本番環境にデプロイする前に、テスト環境で HugePages を設定し、パフォーマンスをベンチマークするのがベストプラクティスです。HugePage のサイズは x86_64 システムでは 2 MB または 1 GB に限られます。HugePages の詳細については、オラクルのウェブサイト「Configuring HugePages on Linux」(Linux での HugePages の設定) を参照してください。

前提条件: お使いのアプリケーションまたはデータベースが HugePages をサポートしていることを確認するには、ベンダーに確認してください。また、使用可能なメモリ量を判断するには、次のコマンドを実行して EC2 インスタンスの合計メモリを確認します。

free -m

Linux インスタンスで HugePages を設定するには、以下の手順を実行します。

  1. 次のコマンドを実行して、カーネルで HugePages が有効になっていないことを確認します。

    sudo cat /proc/sys/vm/nr_hugepages

    コマンド出力が 0 の場合、HugePages はアクティブになっていません。

  2. 必要な HugePages の数を計算するには、次の式を使用します。<br id=hardline_break/> HugePages の数 = 必要なメモリ/HugePage サイズ <br id=hardline_break/> 注: 計算結果を切り上げて、十分なページが作成されていることを確認してください。

  3. 次のコマンドを実行して HugePages を有効化し、カーネルパラメータ値を設定します。

    sudo sysctl -w vm.nr_hugepages=2048

    注: 2048 は、計算した HugePages の数に置き換えてください。<br id=hardline_break/> 出力例:

    vm.nr_hugepages = 2048
  4. 再起動後にシステムが HugePages を割り当てていることを確認するには、/etc/sysctl.conf ファイルに次のエントリを追加します。

    sudo echo "vm.nr_hugepages=2048" >> /etc/sysctl.conf

    注: 2048 は、計算した HugePages の数に置き換えてください。

  5. 変更を確認するには、次のコマンドを実行します。

    sudo cat /etc/sysctl.conf

    コマンド出力で、vm.nr_hugepages の値があることを確認します。<br id=hardline_break/> 出力例:

    # sudo cat /etc/sysctl.conf
    # sysctl settings are defined through files in
    # /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
    #
    # Vendors settings live in /usr/lib/sysctl.d/.
    # To override a whole file, create a new file with the same in
    # /etc/sysctl.d/ and put new settings there. To override
    # only specific settings, add a file with a lexically later
    # name in /etc/sysctl.d/ and put new settings there.
    #
    # For more information, see sysctl.conf(5) and sysctl.d(5).
    vm.zone_reclaim_mode=1
    vm.nr_hugepages=2048
  6. インスタンスを再起動します。

  7. 次のコマンドを再実行して、HugePages の値と構成を確認します。

    sudo cat /proc/sys/vm/nr_hugepages

    出力が、計算した HugePages の数である場合、HugePages は有効化されています。<br id=hardline_break/> 出力例:

    # sudo cat /proc/sys/vm/nr_hugepages
    2048
  8. /proc/meminfo で利用可能な HugePages を確認するには、以下のコマンドを実行します。

    sudo grep Huge /proc/meminfo

    出力例:

    # sudo grep Huge /proc/meminfo
    HugePages_Total:    2048
    HugePages_Free:     2048
    HugePages_Rsvd:        0
    HugePages_Surp:        0
    Hugepagesize:       2048 kB

    HugePages の各値の定義については、kernel.org の「HugePages」を参照してください。

HugePages を無効化するには、次の手順を実行します。

  1. 次のコマンドを実行して nr_hugepages0 にリセットします。

    sudo sysctl -w vm.nr_hugepages=0
  2. sysctl.conf から次のエントリを削除します。

    sudo echo "vm.nr_hugepages=2048" >> /etc/sysctl.conf
  3. インスタンスを再起動します。

AWS公式更新しました 7ヶ月前
コメントはありません

関連するコンテンツ