從系統架構來看,目前的商用服務器大致能夠分爲三類,即對稱多處理器結構 (SMP : Symmetric Multi-Processor) ,非一致存儲訪問結構 (NUMA : Non-Uniform Memory Access) ,以及海量並行處理結構 (MPP : Massive Parallel Processing) 。它們的特徵分別描述以下:html
1. SMP(Symmetric Multi-Processor) 數據庫
SMP (Symmetric Multi Processing),對稱多處理系統內有許多緊耦合多處理器,在這樣的系統中,全部的CPU共享所有資源,如總線,內存和I/O系統等,操做系統或管理數據庫的複本只有一個,這種系統有一個最大的特色就是共享全部資源。多個CPU之間沒有區別,平等地訪問內存、外設、一個操做系統。操做系統管理着一個隊列,每一個處理器依次處理隊列中的進程。若是兩個處理器同時請求訪問一個資源(例如同一段內存地址),由硬件、軟件的鎖機制去解決資源爭用問題。Access to RAM is serialized; this and cache coherency issues causes performance to lag slightly behind the number of additional processors in the system.服務器
所謂對稱多處理器結構,是指服務器中多個 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 。架構
圖 1.SMP 服務器 CPU 利用率狀態dom
2. NUMA(Non-Uniform Memory Access) ide
因爲 SMP 在擴展能力上的限制,人們開始探究如何進行有效地擴展從而構建大型系統的技術, NUMA 就是這種努力下的結果之一。利用 NUMA 技術,能夠把幾十個 CPU( 甚至上百個 CPU) 組合在一個服務器內。其 CPU 模塊結構如圖 2 所示:post
圖 2.NUMA 服務器 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 倍性能的提高。
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 技術的一個關係數據庫軟件,基於此數據庫來開發應用時,無論後臺服務器由多少個節點組成,開發人員所面對的都是同一個數據庫系統,而不須要考慮如何調度其中某幾個節點的負載。
MPP (Massively Parallel Processing),大規模並行處理系統,這樣的系統是由許多鬆耦合的處理單元組成的,要注意的是這裏指的是處理單元而不是處理器。每一個單元內的CPU都有本身私有的資源,如總線,內存,硬盤等。在每一個單元內都有操做系統和管理數據庫的實例複本。這種結構最大的特色在於不共享資源。
4. 三種體系架構之間的差別
4.1 SMP系統與MPP系統比較
既然有兩種結構,那它們各有什麼特色呢?採用什麼結構比較合適呢?一般狀況下,MPP系統由於要在不一樣處理單元之間傳送信息(請注意上圖),因此它的效率要比SMP要差一點,可是這也不是絕對的,由於MPP系統不共享資源,所以對它而言,資源比SMP要多,當須要處理的事務達到必定規模時,MPP的效率要比SMP好。這就是看通訊時間佔用計算時間的比例而定,若是通訊時間比較多,那MPP系統就不佔優點了,相反,若是通訊時間比較少,那MPP系統能夠充分發揮資源的優點,達到高效率。當前使用的OTLP程序中,用戶訪問一箇中心數據庫,若是採用SMP系統結構,它的效率要比採用MPP結構要快得多。而MPP系統在決策支持和數據挖掘方面顯示了優點,能夠這樣說,若是操做相互之間沒有什麼關係,處理單元之間須要進行的通訊比較少,那採用MPP系統就要好,相反就不合適了。
經過上面兩個圖咱們能夠看到,對於SMP來講,制約它速度的一個關鍵因素就是那個共享的總線,所以對於DSS程序來講,只能選擇MPP,而不能選擇SMP,當大型程序的處理要求大於共享總線時,總線就沒有能力進行處理了,這時SMP系統就不行了。固然了,兩個結構互有優缺點,若是可以將兩種結合起來取長補短,固然最好了。
4.2 NUMA 與 MPP 的區別
從架構來看, NUMA 與 MPP 具備許多類似之處:它們都由多個節點組成,每一個節點都具備本身的 CPU 、內存、 I/O ,節點之間均可以經過節點互聯機制進行信息交互。那麼它們的區別在哪裏?經過分析下面 NUMA 和 MPP 服務器的內部架構和工做原理不難發現其差別所在。
首先是節點互聯機制不一樣, NUMA 的節點互聯機制是在同一個物理服務器內部實現的,當某個 CPU 須要進行遠地內存訪問時,它必須等待,這也是 NUMA 服務器沒法實現 CPU 增長時性能線性擴展的主要緣由。而 MPP 的節點互聯機制是在不一樣的 SMP 服務器外部經過 I/O 實現的,每一個節點只訪問本地內存和存儲,節點之間的信息交互與節點自己的處理是並行進行的。所以 MPP 在增長節點時性能基本上能夠實現線性擴展。
其次是內存訪問機制不一樣。在 NUMA 服務器內部,任何一個 CPU 能夠訪問整個系統的內存,但遠地訪問的性能遠遠低於本地內存訪問,所以在開發應用程序時應該儘可能避免遠地內存訪問。在 MPP 服務器中,每一個節點只訪問本地內存,不存在遠地內存訪問的問題。
圖 3.MPP 服務器架構圖
數據倉庫的選擇
哪一種服務器更加適應數據倉庫環境?這須要從數據倉庫環境自己的負載特徵入手。衆所周知,典型的數據倉庫環境具備大量複雜的數據處理和綜合分析,要求系統具備很高的 I/O 處理能力,而且存儲系統須要提供足夠的 I/O 帶寬與之匹配。而一個典型的 OLTP 系統則以聯機事務處理爲主,每一個交易所涉及的數據很少,要求系統具備很高的事務處理能力,可以在單位時間裏處理儘可能多的交易。顯然這兩種應用環境的負載特徵徹底不一樣。
從 NUMA 架構來看,它能夠在一個物理服務器內集成許多 CPU ,使系統具備較高的事務處理能力,因爲遠地內存訪問時延遠長於本地內存訪問,所以須要儘可能減小不一樣 CPU 模塊之間的數據交互。顯然, NUMA 架構更適用於 OLTP 事務處理環境,當用於數據倉庫環境時,因爲大量複雜的數據處理必然致使大量的數據交互,將使 CPU 的利用率大大下降。
相對而言, MPP 服務器架構的並行處理能力更優越,更適合於複雜的數據綜合分析與處理環境。固然,它須要藉助於支持 MPP 技術的關係數據庫系統來屏蔽節點之間負載平衡與調度的複雜性。另外,這種並行處理能力也與節點互聯網絡有很大的關係。顯然,適應於數據倉庫環境的 MPP 服務器,其節點互聯網絡的 I/O 性能應該很是突出,才能充分發揮整個系統的性能。
4.3 NUMA、MPP、SMP之間性能的區別
NUMA的節點互聯機制是在同一個物理服務器內部實現的,當某個CPU須要進行遠地內存訪問時,它必須等待,這也是NUMA服務器沒法實現CPU增長時性能線性擴展。
MPP的節點互聯機制是在不一樣的SMP服務器外部經過I/O實現的,每一個節點只訪問本地內存和存儲,節點之間的信息交互與節點自己的處理是並行進行的。所以MPP在增長節點時性能基本上能夠實現線性擴展。
SMP全部的CPU資源是共享的,所以徹底實現線性擴展。
4.4 NUMA、MPP、SMP之間擴展的區別
NUMA理論上能夠無限擴展,目前技術比較成熟的可以支持上百個CPU進行擴展。如HP的SUPERDOME。
MPP理論上也能夠實現無限擴展,目前技術比較成熟的可以支持512個節點,數千個CPU進行擴展。
SMP擴展能力不好,目前2個到4個CPU的利用率最好,可是IBM的BOOK技術,可以將CPU擴展到8個。
MPP是由多個SMP構成,多個SMP服務器經過必定的節點互聯網絡進行鏈接,協同工做,完成相同的任務。
4.5 MPP和SMP、NUMA應用之間的區別
MPP的優點:
MPP系統不共享資源,所以對它而言,資源比SMP要多,當須要處理的事務達到必定規模時,MPP的效率要比SMP好。因爲MPP系統由於要在不一樣處理單元之間傳送信息,在通信時間少的時候,那MPP系統能夠充分發揮資源的優點,達到高效率。也就是說:操做相互之間沒有什麼關係,處理單元之間須要進行的通訊比較少,那採用MPP系統就要好。所以,MPP系統在決策支持和數據挖掘方面顯示了優點。
SMP的優點:
MPP系統由於要在不一樣處理單元之間傳送信息,因此它的效率要比SMP要差一點。在通信時間多的時候,那MPP系統能夠充分發揮資源的優點。所以當前使用的OTLP程序中,用戶訪問一箇中心數據庫,若是採用SMP系統結構,它的效率要比採用MPP結構要快得多。
NUMA架構的優點:
NUMA架構來看,它能夠在一個物理服務器內集成許多CPU,使系統具備較高的事務處理能力,因爲遠地內存訪問時延遠長於本地內存訪問,所以須要儘可能減小不一樣CPU模塊之間的數據交互。顯然,NUMA架構更適用於OLTP事務處理環境,當用於數據倉庫環境時,因爲大量複雜的數據處理必然致使大量的數據交互,將使CPU的利用率大大下降。