跳至內容

如何在 Amazon EC2 Linux 執行個體上設定 HugePages?

2 分的閱讀內容
0

我想要在 Amazon Elastic Compute Cloud (Amazon EC2) Linux 執行個體上設定 HugePages。

解決方法

**注意:**最佳實務是在測試環境中設定 HugePages,並在將 HugePages 部署到生產環境之前進行效能基準測試。在 x86_64 系統上,HugePage 的大小只能是 2 MB 或 1 GB。如需更多 HugePages 的資訊,請參閱 Oracle 網站上的在 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_hugepages 重設為 0

    sudo sysctl -w vm.nr_hugepages=0
  2. sysctl.conf 中移除以下項目:

    sudo echo "vm.nr_hugepages=2048" >> /etc/sysctl.conf
  3. 重新啟動您的執行個體

AWS 官方已更新 3 個月前