muma
介紹
非一致內存訪問——NU介紹
非一致內存訪問——NUMA
Microsoft Microsoft SQL Server 能識別非一致性內存訪問 (NUMA),無需特殊配置便可在 NUMA 硬件上順利地執行。隨著處理器時鐘速度的提高和處理器數量的增加,使用這種額外處理能力所需的內存滯后時間越來越難以減少。為了避開這一問題,硬件供應商提供了大型的 L3 緩存,但這只是一種有限的解決方案。NUMA 體系結構為此問題提供了可擴展的解決方案。SQL Server 已設計為利用基于 NUMA 的計算機而無需更改任何應用程序。[1]
概念
硬件已經趨向使用多條系統總線,每條系統總線為一小組處理器提供服務。每組處理器都有自己的內存,并可能有自己的 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 節點。MA
Microsoft Microsoft SQL Server 能識別非一致性內存訪問 (NUMA),無需特殊配置便可在 NUMA 硬件上順利地執行。隨著處理器時鐘速度的提高和處理器數量的增加,使用這種額外處理能力所需的內存滯后時間越來越難以減少。為了避開這一問題,硬件供應商提供了大型的 L3 緩存,但這只是一種有限的解決方案。NUMA 體系結構為此問題提供了可擴展的解決方案。SQL Server 已設計為利用基于 NUMA 的計算機而無需更改任何應用程序。[1]
概念
硬件已經趨向使用多條系統總線,每條系統總線為一小組處理器提供服務。每組處理器都有自己的內存,并可能有自己的 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 節點。
總結
- 上一篇: 生成式对抗网络(GAN)相关问题汇总(较
- 下一篇: 基于MATLAB的机器人学、机器视觉与控