共用方式為


NUMA 硬體上的 IIS 8.0 多核心調整

作者:Robert McMurray

相容性

版本 備註
IIS 8.0 NUMA 上的多核心調整是在 IIS 8.0 中引進。
IIS 7.5 IIS 7.5 不支援 NUMA 上的多核心調整。
IIS 7.0 IIS 7.0 不支援 NUMA 上的多核心調整。

問題

一般而言,增加核心數目應該會增加效能。 不過,有一點在於增加核心數目可能會導致效能降低,因為記憶體同步處理的成本超過 NUMA 硬體與其他核心的優點。 IIS 8.0 藉由在非統一記憶體存取 (NUMA) 硬體上,以智慧方式散發和親和其進程來解決此問題。

解決方法

Windows Server 2012 上的 Internet Information Services (IIS) 具有 NUMA 感知功能,並為 IT 系統管理員提供最佳設定。 下一節說明不同的組態選項,以在 NUMA 硬體上使用 IIS 8.0 達到最佳效能。

IIS 支援下列兩種方式來分割工作負載:

  1. 在一個應用程式集區中執行多個背景工作進程 (亦即 Web 樹) :如果您使用此模式,則應用程式集區預設會設定為執行一個背景工作進程。 為了達到最大效能,您應該考慮執行與 NUMA 節點相同的背景工作進程數目,讓背景工作進程與 NUMA 節點之間有 1:1 親和性。 您可以將 「背景工作進程上限」 AppPoolsetting 設定為 0 來完成。 在此設定中,IIS 會決定硬體上有多少 NUMA 節點可用,並啟動相同數目的背景工作進程。
  2. 在單一工作負載/月臺中執行多個應用程式集區:在此設定中,工作負載/月臺會分成多個應用程式集區。 例如,月臺可能包含數個設定為在不同的應用程式集區中執行的應用程式。 實際上,此設定會導致針對工作負載/月臺執行多個 IIS 背景工作進程,而 IIS 會以智慧方式散發和親和化進程,以達到最大效能。

此外,IIS 8.0 有兩種不同的方式可在 IIS 背景工作進程即將啟動時識別最佳的 NUMA 節點。

  1. 大部分可用的記憶體 (預設) :此方法背後的概念是,具有最可用記憶體的 NUMA 節點最適合用來處理即將啟動的其他 IIS 背景工作進程。 IIS 知道每個 NUMA 節點的記憶體耗用量,並使用這項資訊來「負載平衡」IIS 背景工作進程。
  2. Windows:IIS 也有選項可讓 Windows OS 做出此決策。 Windows OS 使用迴圈配置資源。

最後,有兩種不同的方式可將執行緒從 IIS 背景工作進程親和至 NUMA 節點。

  1. 軟親和性 (預設) :如果其他 NUMA 節點具有迴圈,IIS 背景工作進程的執行緒可能會排程到非親和性 NUMA 節點。 這種方法有助於將系統上所有可用的資源極大化。
  2. 硬式親和性:使用硬式親和性,不論負載可能位於系統上的其他 NUMA 節點上,IIS 背景工作進程的所有線程都會親和至使用上述設計選取的所選 NUMA 節點。

逐步指示

必要條件

  • IIS 安裝在 Windows Server 2012 上。
  • IIS 進程模型是 IIS 應用程式集區組態的一部分。 不需要從 伺服器管理員 安裝特定的 IIS 功能。

已知 Bug 的因應措施

目前沒有此功能的已知錯誤。

設定步驟

  1. 開啟 IIS 管理員
  2. 在左側導覽視窗中選取 [應用程式集 區]:
    顯示已選取 [應用程式集區] 的螢幕擷取畫面。
  3. 選取 [應用程式集區]:
    顯示 [應用程式集區] 窗格的螢幕擷取畫面。預設應用程式集區行會反白顯示。
  4. 在 [ 動作 ] 窗格中,選取 [ 進階設定]:
    顯示 [動作] 窗格的螢幕擷取畫面,其中已醒目提示 [進階設定]。
  5. [進程模型] 群組底下,找出 [ 最大背景工作進程 ] 設定。
    顯示進程模型群組的螢幕擷取畫面。[背景工作進程上限] 及其值為 1 會反白顯示。
  6. 將這個值設定為 0。

您也可以在 [ 進階設定] 下找到最佳的 NUMA 選取邏輯和親和性類型。 不過,只有在 IIS 在 NUMA 硬體上執行時,才會顯示它們。

案例

在升級至 Windows Server 2012 之前和之後,在 NUMA 硬體上執行效能測試。 比較效能結果以查看改善。

總結

您已成功探索 Windows Server 2012 中 NUMA 硬體功能的 IIS 多核心調整。