從系統架構來看,目前的商用伺服器大體可以分為三類,即對稱多處理器結構(SMP:Symmetric Multi-Processor),非一致儲存訪問結構(NUMA:Non-Uniform Memory Access),以及海量並行處理結構(MPP:Massive Parallel Processing)。
一、SMP(Symmetric Multi-Processor)
所謂對稱多處理器結構,是指伺服器中多個CPU對稱工作,無主次或從屬關係。各CPU共享相同的物理記憶體,每個 CPU訪問記憶體中的任何地址所需時間是相同的,因此SMP也被稱為一致儲存器訪問結構(UMA:Uniform Memory Access)。對SMP伺服器進行擴充套件的方式包括增加記憶體、使用更快的CPU、增加CPU、擴充I/O(槽口數與匯流排數)以及新增更多的外部裝置(通常是磁碟儲存)。
SMP伺服器的主要特徵是共享,系統中所有資源(CPU、記憶體、I/O等)都是共享的。也正是由於這種特徵,導致了SMP伺服器的主要問題,那就是它的擴充套件能力非常有限。對於SMP伺服器而言,每一個共享的環節都可能造成SMP伺服器擴充套件時的瓶頸,而最受限制的則是記憶體。由於每個CPU必須透過相同的記憶體匯流排訪問相同的記憶體資源,因此隨著CPU數量的增加,記憶體訪問衝突將迅速增加,最終會造成CPU資源的浪費,使 CPU效能的有效性大大降低。實驗證明,SMP伺服器CPU利用率最好的情況是2至4個CPU。
二、NUMA(Non-Uniform Memory Access)
由於SMP在擴充套件能力上的限制,人們開始探究如何進行有效地擴充套件從而構建大型系統的技術,NUMA就是這種努力下的結果之一。利用NUMA技術,可以把幾十個CPU(甚至上百個CPU)組合在一個伺服器內。
NUMA伺服器的基本特徵是具有多個CPU模組,每個CPU模組由多個CPU(如4個)組成,並且具有獨立的本地記憶體、I/O槽口等。由於其節點之間可以透過互聯模組(如稱為Crossbar Switch)進行連線和資訊互動,因此每個CPU可以訪問整個系統的記憶體(這是NUMA系統與MPP系統的重要差別)。顯然,訪問本地記憶體的速度將遠遠高於訪問遠地記憶體(系統內其它節點的記憶體)的速度,這也是非一致儲存訪問NUMA的由來。由於這個特點,為了更好地發揮系統性能,開發應用程式時需要儘量減少不同CPU模組之間的資訊互動。利用NUMA技術,可以較好地解決原來SMP系統的擴充套件問題,在一個物理伺服器內可以支援上百個CPU。比較典型的NUMA伺服器的例子包括HP的Superdome、SUN15K、IBMp690等。
但NUMA技術同樣有一定缺陷,由於訪問遠地記憶體的延時遠遠超過本地記憶體,因此當CPU數量增加時,系統性能無法線性增加。如HP公司釋出Superdome伺服器時,曾公佈了它與HP其它UNIX伺服器的相對效能值,結果發現,64路CPU的Superdome (NUMA結構)的相對效能值是20,而8路N4000(共享的SMP結構)的相對效能值是6.3。從這個結果可以看到,8倍數量的CPU換來的只是3倍效能的提升。
三、MPP(Massive Parallel Processing)
和NUMA不同,MPP提供了另外一種進行系統擴充套件的方式,它由多個SMP伺服器透過一定的節點網際網路絡進行連線,協同工作,完成相同的任務,從使用者的角度來看是一個伺服器系統。其基本特徵是由多個SMP伺服器(每個SMP伺服器稱節點)透過節點網際網路絡連線而成,每個節點只訪問自己的本地資源(記憶體、儲存等),是一種完全無共享(Share Nothing)結構,因而擴充套件能力最好,理論上其擴充套件無限制,目前的技術可實現512個節點互聯,數千個CPU。目前業界對節點網際網路絡暫無標準,如 NCR的Bynet,IBM的SPSwitch,它們都採用了不同的內部實現機制。但節點網際網路僅供MPP伺服器內部使用,對使用者而言是透明的。
在MPP系統中,每個SMP節點也可以執行自己的作業系統、資料庫等。但和NUMA不同的是,它不存在異地記憶體訪問的問題。換言之,每個節點內的CPU不能訪問另一個節點的記憶體。節點之間的資訊互動是透過節點網際網路絡實現的,這個過程一般稱為資料重分配(Data Redistribution)。
但是MPP伺服器需要一種複雜的機制來排程和平衡各個節點的負載和並行處理過程。目前一些基於MPP技術的伺服器往往透過系統級軟體(如資料庫)來遮蔽這種複雜性。舉例來說,NCR的Teradata就是基於MPP技術的一個關係資料庫軟體,基於此資料庫來開發應用時,不管後臺伺服器由多少個節點組成,開發人員所面對的都是同一個資料庫系統,而不需要考慮如何排程其中某幾個節點的負載。
從系統架構來看,目前的商用伺服器大體可以分為三類,即對稱多處理器結構(SMP:Symmetric Multi-Processor),非一致儲存訪問結構(NUMA:Non-Uniform Memory Access),以及海量並行處理結構(MPP:Massive Parallel Processing)。
一、SMP(Symmetric Multi-Processor)
所謂對稱多處理器結構,是指伺服器中多個CPU對稱工作,無主次或從屬關係。各CPU共享相同的物理記憶體,每個 CPU訪問記憶體中的任何地址所需時間是相同的,因此SMP也被稱為一致儲存器訪問結構(UMA:Uniform Memory Access)。對SMP伺服器進行擴充套件的方式包括增加記憶體、使用更快的CPU、增加CPU、擴充I/O(槽口數與匯流排數)以及新增更多的外部裝置(通常是磁碟儲存)。
SMP伺服器的主要特徵是共享,系統中所有資源(CPU、記憶體、I/O等)都是共享的。也正是由於這種特徵,導致了SMP伺服器的主要問題,那就是它的擴充套件能力非常有限。對於SMP伺服器而言,每一個共享的環節都可能造成SMP伺服器擴充套件時的瓶頸,而最受限制的則是記憶體。由於每個CPU必須透過相同的記憶體匯流排訪問相同的記憶體資源,因此隨著CPU數量的增加,記憶體訪問衝突將迅速增加,最終會造成CPU資源的浪費,使 CPU效能的有效性大大降低。實驗證明,SMP伺服器CPU利用率最好的情況是2至4個CPU。
二、NUMA(Non-Uniform Memory Access)
由於SMP在擴充套件能力上的限制,人們開始探究如何進行有效地擴充套件從而構建大型系統的技術,NUMA就是這種努力下的結果之一。利用NUMA技術,可以把幾十個CPU(甚至上百個CPU)組合在一個伺服器內。
NUMA伺服器的基本特徵是具有多個CPU模組,每個CPU模組由多個CPU(如4個)組成,並且具有獨立的本地記憶體、I/O槽口等。由於其節點之間可以透過互聯模組(如稱為Crossbar Switch)進行連線和資訊互動,因此每個CPU可以訪問整個系統的記憶體(這是NUMA系統與MPP系統的重要差別)。顯然,訪問本地記憶體的速度將遠遠高於訪問遠地記憶體(系統內其它節點的記憶體)的速度,這也是非一致儲存訪問NUMA的由來。由於這個特點,為了更好地發揮系統性能,開發應用程式時需要儘量減少不同CPU模組之間的資訊互動。利用NUMA技術,可以較好地解決原來SMP系統的擴充套件問題,在一個物理伺服器內可以支援上百個CPU。比較典型的NUMA伺服器的例子包括HP的Superdome、SUN15K、IBMp690等。
但NUMA技術同樣有一定缺陷,由於訪問遠地記憶體的延時遠遠超過本地記憶體,因此當CPU數量增加時,系統性能無法線性增加。如HP公司釋出Superdome伺服器時,曾公佈了它與HP其它UNIX伺服器的相對效能值,結果發現,64路CPU的Superdome (NUMA結構)的相對效能值是20,而8路N4000(共享的SMP結構)的相對效能值是6.3。從這個結果可以看到,8倍數量的CPU換來的只是3倍效能的提升。
三、MPP(Massive Parallel Processing)
和NUMA不同,MPP提供了另外一種進行系統擴充套件的方式,它由多個SMP伺服器透過一定的節點網際網路絡進行連線,協同工作,完成相同的任務,從使用者的角度來看是一個伺服器系統。其基本特徵是由多個SMP伺服器(每個SMP伺服器稱節點)透過節點網際網路絡連線而成,每個節點只訪問自己的本地資源(記憶體、儲存等),是一種完全無共享(Share Nothing)結構,因而擴充套件能力最好,理論上其擴充套件無限制,目前的技術可實現512個節點互聯,數千個CPU。目前業界對節點網際網路絡暫無標準,如 NCR的Bynet,IBM的SPSwitch,它們都採用了不同的內部實現機制。但節點網際網路僅供MPP伺服器內部使用,對使用者而言是透明的。
在MPP系統中,每個SMP節點也可以執行自己的作業系統、資料庫等。但和NUMA不同的是,它不存在異地記憶體訪問的問題。換言之,每個節點內的CPU不能訪問另一個節點的記憶體。節點之間的資訊互動是透過節點網際網路絡實現的,這個過程一般稱為資料重分配(Data Redistribution)。
但是MPP伺服器需要一種複雜的機制來排程和平衡各個節點的負載和並行處理過程。目前一些基於MPP技術的伺服器往往透過系統級軟體(如資料庫)來遮蔽這種複雜性。舉例來說,NCR的Teradata就是基於MPP技術的一個關係資料庫軟體,基於此資料庫來開發應用時,不管後臺伺服器由多少個節點組成,開發人員所面對的都是同一個資料庫系統,而不需要考慮如何排程其中某幾個節點的負載。