一、概述
從系統架構來說,目前的主流企業伺服器基本可以分為三類:SMP (Symmetric Multi Processing,對稱式多處理架構),NUMA (Non-Uniform Memory Access,非一致儲存訪問架構),和MPP (Massive Parallel Processing,海量平行處理架構)。三種架構各有特點,本文將重點聊聊NUMA。
為了瞭解NUMA,我這裡就介紹一下NUMA與其他兩種Non-NUMA的主要區別。
1.SMP(Symmetric Multi Processing)
SMP是非常常見的一種架構。在SMP模式下,多個處理器均對稱的串連在系統記憶體上,所有處理器都以平等的代價訪問系統記憶體。它的優點是對記憶體的訪問是平等、一致的;缺點是因為大家都是一致的,在傳統的 SMP 系統中,所有處理器都共用系統匯流排,因此當處理器的數目增多時,系統匯流排的競爭衝突迅速加大,系統匯流排成為了效能瓶頸,所以目前 SMP 系統的處理器數目一般只有數十個,可擴充性受到很大限制。
2.MPP (Massive Parallel Processing)
MPP則是邏輯上將整個系統劃分為多個節點,每個節點的處理器只可以訪問本身的本地資源,是完全無共用的架構。節點之間的資料交換需要軟體實施。它的優點是可擴充性非常好;缺點是彼此資料交換困難,需要控制軟體的大量工作來實現通訊以及任務的分配、調度,對於一般的公司專屬應用程式而言過於複雜,效率不高。
3.NUMA(Non-Uniform Memory Access)
NUMA架構則在某種意義上是綜合了SMP和MPP的特點:邏輯上整個系統也是分為多個節點,每個節點可以訪問本地記憶體資源,也可以訪問遠程記憶體資源,但訪問本地記憶體資源遠遠快於遠程記憶體資源。它的優點是兼顧了SMP和MPP的特點, 易於管理,可擴充性好;缺點是訪問遠程記憶體資源的所需時間非常的大。
在實際系統中使用比較廣的是SMP和NUMA架構。像傳統的英特爾IA架構就是SMP,而很多大型主機採用了NUMA架構。
現在已經進入了多核時代,隨著核心數的越來越多,對於記憶體輸送量和延遲有了更高的要求。正是考慮到這種需求,NUMA架構出現在了最新的英特爾下一代Xeon處理器中。