非一致記憶體訪問

Microsoft Microsoft SQL Server 能識別非一致性記憶體訪問 (NUMA),無需特殊配置便可在 NUMA 硬體上順利地執行。隨著處理器時鐘速度的提高和處理器數量的增加,使用這種額外處理能力所需的記憶體滯後時間越來越難以減少。為了避開這一問題,硬體供應商提供了大型的 L3 快取,但這只是一種有限的解決方案。NUMA 體系結構為此問題提供了可擴展的解決方案。SQL Server 已設計為利用基於 NUMA 的計算機而無需更改任何應用程式。

基本介紹

  • 中文名:非一致記憶體訪問
  • 英文名:NUMA
介紹,概念,硬體,軟體,

介紹

非一致記憶體訪問——NUMA
Microsoft Microsoft SQL Server 能識別非一致性記憶體訪問 (NUMA),無需特殊配置便可在 NUMA 硬體上順利地執行。隨著處理器時鐘速度的提高和處理器數量的增加,使用這種額外處理能力所需的記憶體滯後時間越來越難以減少。為了避開這一問題,硬體供應商提供了大型的 L3 快取,但這只是一種有限的解決方案。NUMA 體系結構為此問題提供了可擴展的解決方案。SQL Server 已設計為利用基於 NUMA 的計算機而無需更改任何應用程式。

概念

硬體已經趨向使用多條系統匯流排,每條系統匯流排為一小組處理器提供服務。每組處理器都有自己的記憶體,並可能有自己的 I/O 通道。但是,每個 CPU 都可以通過一致的方式訪問與其他組關聯的記憶體。每個組稱為一個“NUMA 節點”。NUMA 節點中的 CPU 數量取決於硬體供應商。訪問本地記憶體比訪問與其他 NUMA 節點關聯的記憶體快。這就是“非一致性記憶體訪問體系結構”名稱的由來。
在 NUMA 硬體上,有些記憶體區域與其他區域位於不同的物理匯流排上。由於 NUMA 同時使用本地記憶體和外部記憶體,因此,訪問某些記憶體區域的時間會比訪問其他記憶體區域的要長。“本地記憶體”和“外部記憶體”通常用於引用當前正在運行的執行緒。本地記憶體是指與當前正在運行執行緒的 CPU 位於同一節點上的記憶體。任何不屬於當前正在運行的執行緒所在的節點的記憶體均為外部記憶體。外部記憶體也稱為“遠程記憶體”。訪問外部記憶體的開銷與訪問本地記憶體的開銷比率稱為 NUMA 比率。如果 NUMA 比率為 1,則它是對稱多處理 (SMP)。比率越高,訪問其他節點記憶體的開銷就越大。不支持 NUMA 的 Windows 應用程式(包括 SQL Server 2000 SP3 及更低版本)有時在 NUMA 硬體上的執行效果非常差。
NUMA 的主要優點是伸縮性。NUMA 體系結構在設計上已超越了 SMP 體系結構在伸縮性上的限制。通過 SMP,所有的記憶體訪問都傳遞到相同的共享記憶體匯流排。這種方式非常適用於 CPU 數量相對較少的情況,但不適用於具有幾十個甚至幾百個 CPU 的情況,因為這些 CPU 會相互競爭對共享記憶體匯流排的訪問。NUMA 通過限制任何一條記憶體匯流排上的 CPU 數量並依靠高速互連來連線各個節點,從而緩解了這些瓶頸狀況。
硬體 NUMA 與軟體 NUMA
NUMA 可以通過專用硬體(硬體 NUMA)或通過配置 SQL Server 記憶體(軟體 NUMA),將記憶體與 CPU 進行匹配。在啟動過程中,SQL Server 根據基本的作業系統和硬體配置或軟體 NUMA 設定對自身進行配置。對於硬體 NUMA 和軟體 NUMA,當 SQL Server 通過 NUMA 配置啟動時,SQL Server 日誌會記錄每個節點以及 CPU 掩碼的多模式配置訊息。

硬體

具有硬體 NUMA 的計算機包含多條系統匯流排,每條系統匯流排為一小組處理器提供服務。每組處理器都有自己的記憶體,並可能有自己的 I/O 通道,但是每個 CPU 都可以通過一致的方式訪問與其他組關聯的記憶體。每個組稱為一個“NUMA 節點”。NUMA 節點中的 CPU 數量取決於硬體供應商。硬體製造商會告知您計算機是否支持硬體 NUMA。
如果具有硬體 NUMA,則它可能會配置為使用交錯記憶體而不使用 NUMA。在這種情況下,Windows 以及 SQL Server 都無法將其識別為 NUMA。請運行以下查詢以查找可用於 SQL Server 的記憶體節點數:
如果 SQL Server 僅返回一個記憶體節點(節點 0),則表示沒有硬體 NUMA,或者該硬體已配置為交錯硬體(非 NUMA)。如果您認為硬體 NUMA 配置不正確,則請與硬體供應商聯繫以啟用 NUMA。SQL Server 會在硬體 NUMA 有四個或少於四個 CPU,並且至少一個節點只有一個 CPU 時,忽略 NUMA 配置。

軟體

SQL Server 允許您將 CPU 分組到稱為軟體 NUMA 的節點中。如果您有多個 CPU 但沒有硬體 NUMA,則通常需要配置軟體 NUMA,但是您還可以使用軟體 NUMA 將硬體 NUMA 節點再細分為更小的組。只有 SQL Server 計畫程式和 SQL Server 網路接口 (SNI) 才支持軟體 NUMA。記憶體節點基於硬體 NUMA 創建,因此,不會受軟體 NUMA 的影響。例如,如果具有安裝了八個 CPU 的 SMP 計算機,並且創建了分別具有兩個 CPU 的四個軟體 NUMA 節點,則將只有一個為所有四個 NUMA 節點提供服務的記憶體節點。軟體 NUMA 不提供記憶體與 CPU 的關聯。
軟體 NUMA 的優點體現在:緩解了具有多個 CPU 但沒有硬體 NUMA 的計算機上 I/O 和惰性編寫器的瓶頸作用。每個 NUMA 節點具有一個 I/O 執行緒和一個惰性編寫器執行緒。根據資料庫的使用情況,這些單個執行緒可能會具有明顯的性能瓶頸。如果配置四個軟體 NUMA 節點,則可提供四個 I/O 執行緒和四個惰性編寫器執行緒,從而可以提高性能。
無法創建包含來自不同硬體 NUMA 節點的 CPU 的軟體 NUMA。例如,如果硬體具有八個 CPU (0..7) 並且具有兩個硬體 NUMA 節點(0-3 和 4-7),則可以通過組合 CPU(0,1) 和 CPU(2,3) 來創建軟體 NUMA。無法使用 CPU (1, 5) 創建軟體 NUMA,但是可以使用 CPU 關聯將 SQL Server 實例與來自不同 NUMA 節點的 CPU 進行關聯。因此,在上述示例中,如果 SQL Server 使用 CPU 0-3,則將只有一個 I/O 執行緒和一個惰性編寫器執行緒。如果在上述示例中,SQL Server 使用 CPU 1、2、5 和 6,則您將訪問兩個 NUMA 節點並具有兩個 I/O 執行緒和兩個惰性編寫器執行緒。
注意:有些硬體配置將共享 L3/L4 快取之類的公共資源。可以按照這些共享資源對處理器進行分組,以創建軟體 NUMA 節點。

相關詞條

熱門詞條

聯絡我們