大型商用服務(wù)器的三大系統(tǒng)架構(gòu)
從系統(tǒng)架構(gòu)來看,目前的商用服務(wù)器大體可以分為三類,即對稱多處理器結(jié)構(gòu)(SMP:Symmetric Multi-Processor),非一致存儲訪問結(jié)構(gòu)(NUMA:Non-Uniform Memory Access),以及海量并行處理結(jié)構(gòu)(MPP:Massive Parallel Processing)。它們的特征分別描述如下:
SMP(Symmetric Multi-Processor)
所謂對稱多處理器結(jié)構(gòu),是指服務(wù)器中多個CPU對稱工作,無主次或從屬關(guān)系。各CPU共享相同的物理內(nèi)存,每個 CPU訪問內(nèi)存中的任何地址所需時間是相同的,因此SMP也被稱為一致存儲器訪問結(jié)構(gòu)(UMA:Uniform Memory Access)。對SMP服務(wù)器進行擴展的方式包括增加內(nèi)存、使用更快的CPU、增加CPU、擴充I/O(槽口數(shù)與總線數(shù))以及添加更多的外部設(shè)備(通常是磁盤存儲)。
SMP服務(wù)器的主要特征是共享,系統(tǒng)中所有資源(CPU、內(nèi)存、I/O等)都是共享的。也正是由于這種特征,導(dǎo)致了SMP服務(wù)器的主要問題,那就是它的擴展能力非常有限。對于SMP服務(wù)器而言,每一個共享的環(huán)節(jié)都可能造成SMP服務(wù)器擴展時的瓶頸,而最受限制的則是內(nèi)存。由于每個CPU必須通過相同的內(nèi)存總線訪問相同的內(nèi)存資源,因此隨著CPU數(shù)量的增加,內(nèi)存訪問沖突將迅速增加,最終會造成CPU資源的浪費,使 CPU性能的有效性大大降低。實驗證明,SMP服務(wù)器CPU利用率最好的情況是2至4個CPU。
圖1.SMP服務(wù)器CPU利用率狀態(tài)
NUMA(Non-Uniform Memory Access)
由于SMP在擴展能力上的限制,人們開始探究如何進行有效地擴展從而構(gòu)建大型系統(tǒng)的技術(shù),NUMA就是這種努力下的結(jié)果之一。利用NUMA技術(shù),可以把幾十個CPU(甚至上百個CPU)組合在一個服務(wù)器內(nèi)。其CPU模塊結(jié)構(gòu)如圖2所示:
圖2.NUMA服務(wù)器CPU模塊結(jié)構(gòu)
NUMA服務(wù)器的基本特征是具有多個CPU模塊,每個CPU模塊由多個CPU(如4個)組成,并且具有獨立的本地內(nèi)存、I/O槽口等。由于其節(jié)點之間可以通過互聯(lián)模塊(如稱為Crossbar Switch)進行連接和信息交互,因此每個CPU可以訪問整個系統(tǒng)的內(nèi)存(這是NUMA系統(tǒng)與MPP系統(tǒng)的重要差別)。顯然,訪問本地內(nèi)存的速度將遠遠高于訪問遠地內(nèi)存(系統(tǒng)內(nèi)其它節(jié)點的內(nèi)存)的速度,這也是非一致存儲訪問NUMA的由來。由于這個特點,為了更好地發(fā)揮系統(tǒng)性能,開發(fā)應(yīng)用程序時需要盡量減少不同CPU模塊之間的信息交互。
利用NUMA技術(shù),可以較好地解決原來SMP系統(tǒng)的擴展問題,在一個物理服務(wù)器內(nèi)可以支持上百個CPU。比較典型的NUMA服務(wù)器的例子包括HP的Superdome、SUN15K、IBMp690等。
但NUMA技術(shù)同樣有一定缺陷,由于訪問遠地內(nèi)存的延時遠遠超過本地內(nèi)存,因此當(dāng)CPU數(shù)量增加時,系統(tǒng)性能無法線性增加。如HP公司發(fā)布Superdome服務(wù)器時,曾公布了它與HP其它UNIX服務(wù)器的相對性能值,結(jié)果發(fā)現(xiàn),64路CPU的Superdome (NUMA結(jié)構(gòu))的相對性能值是20,而8路N4000(共享的SMP結(jié)構(gòu))的相對性能值是6.3。從這個結(jié)果可以看到,8倍數(shù)量的CPU換來的只是3倍性能的提升。
圖3.MPP服務(wù)器架構(gòu)圖
MPP(Massive Parallel Processing)
和NUMA不同,MPP提供了另外一種進行系統(tǒng)擴展的方式,它由多個SMP服務(wù)器通過一定的節(jié)點互聯(lián)網(wǎng)絡(luò)進行連接,協(xié)同工作,完成相同的任務(wù),從用戶的角度來看是一個服務(wù)器系統(tǒng)。其基本特征是由多個SMP服務(wù)器(每個SMP服務(wù)器稱節(jié)點)通過節(jié)點互聯(lián)網(wǎng)絡(luò)連接而成,每個節(jié)點只訪問自己的本地資源(內(nèi)存、存儲等),是一種完全無共享(Share Nothing)結(jié)構(gòu),因而擴展能力最好,理論上其擴展無限制,目前的技術(shù)可實現(xiàn)512個節(jié)點互聯(lián),數(shù)千個CPU。目前業(yè)界對節(jié)點互聯(lián)網(wǎng)絡(luò)暫無標準,如 NCR的Bynet,IBM的SPSwitch,它們都采用了不同的內(nèi)部實現(xiàn)機制。但節(jié)點互聯(lián)網(wǎng)僅供MPP服務(wù)器內(nèi)部使用,對用戶而言是透明的。
在MPP系統(tǒng)中,每個SMP節(jié)點也可以運行自己的操作系統(tǒng)、數(shù)據(jù)庫等。但和NUMA不同的是,它不存在異地內(nèi)存訪問的問題。換言之,每個節(jié)點內(nèi)的CPU不能訪問另一個節(jié)點的內(nèi)存。節(jié)點之間的信息交互是通過節(jié)點互聯(lián)網(wǎng)絡(luò)實現(xiàn)的,這個過程一般稱為數(shù)據(jù)重分配(Data Redistribution)。
但是MPP服務(wù)器需要一種復(fù)雜的機制來調(diào)度和平衡各個節(jié)點的負載和并行處理過程。目前一些基于MPP技術(shù)的服務(wù)器往往通過系統(tǒng)級軟件(如數(shù)據(jù)庫)來屏蔽這種復(fù)雜性。舉例來說,NCR的Teradata就是基于MPP技術(shù)的一個關(guān)系數(shù)據(jù)庫軟件,基于此數(shù)據(jù)庫來開發(fā)應(yīng)用時,不管后臺服務(wù)器由多少個節(jié)點組成,開發(fā)人員所面對的都是同一個數(shù)據(jù)庫系統(tǒng),而不需要考慮如何調(diào)度其中某幾個節(jié)點的負載。
NUMA與MPP的區(qū)別
從架構(gòu)來看,NUMA與MPP具有許多相似之處:它們都由多個節(jié)點組成,每個節(jié)點都具有自己的CPU、內(nèi)存、I/O,節(jié)點之間都可以通過節(jié)點互聯(lián)機制進行信息交互。那么它們的區(qū)別在哪里?通過分析下面NUMA和MPP服務(wù)器的內(nèi)部架構(gòu)和工作原理不難發(fā)現(xiàn)其差異所在。
首先是節(jié)點互聯(lián)機制不同,NUMA的節(jié)點互聯(lián)機制是在同一個物理服務(wù)器內(nèi)部實現(xiàn)的,當(dāng)某個CPU需要進行遠地內(nèi)存訪問時,它必須等待,這也是NUMA服務(wù)器無法實現(xiàn)CPU增加時性能線性擴展的主要原因。而MPP的節(jié)點互聯(lián)機制是在不同的SMP服務(wù)器外部通過I/O 實現(xiàn)的,每個節(jié)點只訪問本地內(nèi)存和存儲,節(jié)點之間的信息交互與節(jié)點本身的處理是并行進行的。因此MPP在增加節(jié)點時性能基本上可以實現(xiàn)線性擴展。
其次是內(nèi)存訪問機制不同。在NUMA服務(wù)器內(nèi)部,任何一個CPU可以訪問整個系統(tǒng)的內(nèi)存,但遠地訪問的性能遠遠低于本地內(nèi)存訪問,因此在開發(fā)應(yīng)用程序時應(yīng)該盡量避免遠地內(nèi)存訪問。在MPP服務(wù)器中,每個節(jié)點只訪問本地內(nèi)存,不存在遠地內(nèi)存訪問的問題。
數(shù)據(jù)倉庫的選擇
哪種服務(wù)器更加適應(yīng)數(shù)據(jù)倉庫環(huán)境?這需要從數(shù)據(jù)倉庫環(huán)境本身的負載特征入手。眾所周知,典型的數(shù)據(jù)倉庫環(huán)境具有大量復(fù)雜的數(shù)據(jù)處理和綜合分析,要求系統(tǒng)具有很高的I/O處理能力,并且存儲系統(tǒng)需要提供足夠的I/O帶寬與之匹配。而一個典型的OLTP系統(tǒng)則以聯(lián)機事務(wù)處理為主,每個交易所涉及的數(shù)據(jù)不多,要求系統(tǒng)具有很高的事務(wù)處理能力,能夠在單位時間里處理盡量多的交易。顯然這兩種應(yīng)用環(huán)境的負載特征完全不同。
從NUMA架構(gòu)來看,它可以在一個物理服務(wù)器內(nèi)集成許多CPU,使系統(tǒng)具有較高的事務(wù)處理能力,由于遠地內(nèi)存訪問時延遠長于本地內(nèi)存訪問,因此需要盡量減少不同CPU模塊之間的數(shù)據(jù)交互。顯然,NUMA架構(gòu)更適用于OLTP事務(wù)處理環(huán)境,當(dāng)用于數(shù)據(jù)倉庫環(huán)境時,由于大量復(fù)雜的數(shù)據(jù)處理必然導(dǎo)致大量的數(shù)據(jù)交互,將使CPU的利用率大大降低。
相對而言,MPP服務(wù)器架構(gòu)的并行處理能力更優(yōu)越,更適合于復(fù)雜的數(shù)據(jù)綜合分析與處理環(huán)境。當(dāng)然,它需要借助于支持MPP技術(shù)的關(guān)系數(shù)據(jù)庫系統(tǒng)來屏蔽節(jié)點之間負載平衡與調(diào)度的復(fù)雜性。另外,這種并行處理能力也與節(jié)點互聯(lián)網(wǎng)絡(luò)有很大的關(guān)系。顯然,適應(yīng)于數(shù)據(jù)倉庫環(huán)境的MPP服務(wù)器,其節(jié)點互聯(lián)網(wǎng)絡(luò)的I/O性能應(yīng)該非常突出,才能充分發(fā)揮整個系統(tǒng)的性能。