跳至主要內容

何謂非均勻記憶體存取(NUMA)?

非均勻記憶體存取(NUMA)

非均勻記憶體存取(NUMA)是一種用於多處理器系統的電腦記憶體設計,其記憶體存取時間會因記憶體位置相對於處理器的距離而變化。在NUMA架構中,每個處理器皆擁有專屬的本地記憶體。雖然它也能存取其他處理器所連接的記憶體,但此類存取速度較慢,因為需要穿越互連線路並可能經過其他處理器,這會引入額外的延遲與頻寬爭用。

NUMA技術的開發旨在解決傳統對稱多處理器(SMP)系統的擴展性限制,該類系統中所有處理器共享單一記憶體池。透過將記憶體分組配置於各處理器附近,NUMA顯著提升記憶體存取效率與整體效能,尤其在配備大量中央處理器(CPU)或核心的系統中效果尤為顯著。

現代作業系統與針對 NUMA 優化的應用程式,能以特定方式分配記憶體,使資料保持在執行運算的處理器附近,從而降低延遲並提升吞吐量。NUMA 技術廣泛應用於伺服器、高效能運算(HPC)系統,以及需要大量記憶體與運算資源的企業工作負載。

NUMA 如何運作?

在 NUMA 系統中,架構被劃分為多個節點。每個節點包含一個或多個處理器(或CPU ),並配有專屬記憶體。這些節點相互連接,使處理器能夠存取本地與遠端記憶體。

存取本地記憶體(物理上連接至相同節點的記憶體)速度更快且延遲較低。當處理器存取遠端記憶體(位於不同節點的記憶體)時,由於節點間的互連路徑會產生額外延遲。這種延遲差異正是定義 NUMA「非均勻性」特性的關鍵因素。

現代 NUMA 系統仰賴系統韌體、作業系統及應用程式具備 NUMA 感知能力。具備 NUMA 感知能力的軟體會嘗試以特定方式分配記憶體並調度程序,使任務及其記憶體緊密地配置於同一節點上。此舉能減少跨節點記憶體傳輸流量,進而優化效能表現。

NUMA通常實現在具備兩個或CPU 系統中,例如伺服器與高效能運算平台。每個插槽皆配備專屬記憶體控制器與本地動態隨機存取記憶體(DRAM),系統透過互連技術(如Intel®Ultra Interconnect (UPI) 或AMD Fabric)串聯各插槽,並在需要時實現遠端記憶體存取功能。

NUMA與系統架構設計

隨著多插槽系統在現代化資料中心企業基礎架構中日益普及,理解NUMA對系統架構的影響至關重要。硬體供應商在設計伺服器主機板與CPU 皆以NUMA拓撲結構為考量,確保處理器與記憶體模組間擁有最佳化資料路徑。此設計直接影響應用程式效能,尤其對橫向擴展至多核心與多插槽的工作負載而言更是如此。

設計考量還包括記憶體配置規則、BIOS層級的NUMA設定,以及元件的實體佈局。系統架構師必須評估應用程式與記憶體及運算資源的互動方式,以確保硬體效能獲得充分發揮。若硬體配置優化不當,將導致NUMA行為表現欠佳,包括過度的遠端記憶體存取及延遲增加等問題。

NUMA系統的軟體優化

要使 NUMA 充分發揮其效能潛力,軟體必須經過設計或至少配置為能感知底層記憶體拓撲結構。諸如 Linux 與 Windows Server 等作業系統皆具備核心層級的 NUMA 支援,可啟用處理器親和性、記憶體綁定及 NUMA 感知調度等功能。這些機制有助於確保執行緒被調度至能快速存取其最常使用記憶體區域的 CPU 上。

應用程式開發人員與系統管理員可透過運用 NUMA 專屬 API 及調校技巧進一步提升效能。諸如 OpenMP 與 MPI 等平行程式設計框架,提供了控制執行緒配置與記憶體局部性的選項。對於企業級與HPC 此等級的優化能顯著降低記憶體延遲並提升吞吐量,尤其在運行於具備龐大記憶體佔用量之多插槽系統時效果更為顯著。

NUMA 用例與優勢

NUMA 技術為需要高度並行處理與龐大記憶體容量的工作負載提供效能優勢。透過減少跨節點記憶體存取並更有效地利用可用頻寬,NUMA 技術能提升擴展性,並協助消除多插槽架構中的效能瓶頸。

高效能運算(HPC)

高效能運算領域中,科學模擬、建模及大規模資料分析工作負載可透過NUMA技術獲益,藉此降低跨多個CPU 記憶體存取延遲。

虛擬化平台

虛擬化管理程式與虛擬機器可透過優化採用 NUMA 感知調度機制,確保虛擬 CPU 及其記憶體始終保留在同一實體節點上。

內存資料庫

NUMA有助於在將大量資料直接儲存於RAM的資料庫系統中,維持低延遲的記憶體存取效能。

大型企業應用程式

NUMA 技術能提升企業軟體(例如企業資源規劃系統)的響應速度與吞吐量,類系統需跨多個核心存取大型記憶體空間。

常見問題

  1. 何謂 NUMA 叢集?
    NUMA 叢集指的是在 NUMA 啟用系統中,將處理器與記憶體組織成節點或叢集的架構。每個叢集擁有專屬的本地記憶體,叢集內的處理器可透過較低延遲存取該記憶體。此配置透過減少對共享記憶體資源的爭用,從而提升效能與擴展性。
  2. 何謂 NUMA 拓撲結構?
    NUMA 拓撲結構描述了系統中 CPU、記憶體與互連介面的實體與邏輯佈局。它定義了哪些處理器連接至哪些記憶體區域,以及節點間如何進行存取。理解系統拓撲結構有助於優化記憶體分配與應用程式效能。
  3. NUMA對虛擬化是否重要?
    是的,NUMA在虛擬化中扮演關鍵角色,能協助確保虛擬機器獲得最佳的記憶體CPU 。當虛擬化管理程式具備NUMA感知能力時,可將虛擬CPU及其關聯記憶體維持在同一實體節點內,從而降低延遲並避免效能損失。
  4. 如何在系統上啟用 NUMA?
    現代伺服器平台通常預設啟用 NUMA 支援。某些情況下,可能需要在系統 BIOS 或 UEFI 設定中手動啟用。啟用後,系統會將 NUMA 拓撲結構暴露給作業系統,以實現最佳化的調度與記憶體分配。
  5. 若軟體不具備 NUMA 感知能力會發生什麼情況?
    若軟體不具備 NUMA 感知能力,可能導致跨節點存取記憶體時效率低下,進而造成較高的延遲與較低的效能。在配備大型記憶體池的多插槽系統中,此問題可能成為效能瓶頸,尤其在高負載工作情境下更為顯著。