
NUMA服務(wù)器的基本特征是:具有多個(gè)CPU模塊(或稱為Building Block、節(jié)點(diǎn));每個(gè)CPU模塊由多個(gè)CPU(如4個(gè))組成,并且具有獨(dú)立的本地內(nèi)存、I/O槽口等;節(jié)點(diǎn)之間通過互連模塊進(jìn)行連接和信息交互;每個(gè)CPU可以訪問整個(gè)系統(tǒng)的內(nèi)存,顯然,訪問本地內(nèi)存的速度將遠(yuǎn)遠(yuǎn)高于訪問遠(yuǎn)地內(nèi)存(系統(tǒng)內(nèi)其他節(jié)點(diǎn)的內(nèi)存)的速度,這也是非一致存儲(chǔ)訪問NUMA的由來(lái)。由于這個(gè)特點(diǎn),為了更好地發(fā)揮系統(tǒng)性能,開發(fā)應(yīng)用程序時(shí)需要盡量減少不同CPU模塊之間的信息交互。
利用NUMA技術(shù),可以較好地解決原來(lái)SMP系統(tǒng)的擴(kuò)展問題,在一個(gè)物理服務(wù)器內(nèi)可以支持上百個(gè)CPU。
NUMA技術(shù)的主要問題是,由于訪問遠(yuǎn)地內(nèi)存的延時(shí)遠(yuǎn)遠(yuǎn)超過本地內(nèi)存,因此當(dāng)CPU數(shù)量增加時(shí),系統(tǒng)性能無(wú)法線性增加。
和NUMA不同,MPP提供了另外一種進(jìn)行系統(tǒng)擴(kuò)展的方式,它由多個(gè)SMP服務(wù)器通過一定的節(jié)點(diǎn)互聯(lián)網(wǎng)絡(luò)進(jìn)行連接,協(xié)同工作,完成相同的任務(wù),從用戶的角度來(lái)看是一個(gè)服務(wù)器系統(tǒng)。其基本特征如下:由多個(gè)SMP服務(wù)器(每個(gè)SMP服務(wù)器稱節(jié)點(diǎn))通過節(jié)點(diǎn)互連網(wǎng)絡(luò)連接而成,每個(gè)節(jié)點(diǎn)只訪問自己的本地資源(內(nèi)存、存儲(chǔ)等),是一種完全無(wú)共享結(jié)構(gòu);擴(kuò)展能力最好,理論上其擴(kuò)展無(wú)限制,目前的技術(shù)可實(shí)現(xiàn)512個(gè)節(jié)點(diǎn)互連。
在MPP系統(tǒng)中,每個(gè)SMP節(jié)點(diǎn)也可以運(yùn)行自己的操作系統(tǒng)、數(shù)據(jù)庫(kù)等,但和NUMA不同的是,它不存在異地內(nèi)存訪問的問題。換言之,每個(gè)節(jié)點(diǎn)內(nèi)的CPU不能訪問另一個(gè)節(jié)點(diǎn)的內(nèi)存。節(jié)點(diǎn)之間的信息交互是通過節(jié)點(diǎn)互聯(lián)網(wǎng)絡(luò)實(shí)現(xiàn)的,這個(gè)過程一般稱為數(shù)據(jù)重分配(Data Redistribution)。
MPP服務(wù)器的主要問題是:需要一種復(fù)雜的機(jī)制來(lái)調(diào)度和平衡各個(gè)節(jié)點(diǎn)的負(fù)載和并行處理過程。目前一些基于MPP技術(shù)的服務(wù)器往往通過系統(tǒng)級(jí)軟件(如數(shù)據(jù)庫(kù))來(lái)屏蔽這種復(fù)雜性?;诖祟悢?shù)據(jù)庫(kù)來(lái)開發(fā)應(yīng)用時(shí),不管后臺(tái)服務(wù)器由多少個(gè)節(jié)點(diǎn)組成,開發(fā)人員所面對(duì)的都是同一個(gè)數(shù)據(jù)庫(kù)系統(tǒng),而不需要考慮如何調(diào)度其中某幾個(gè)節(jié)點(diǎn)的負(fù)載。
NUMA與MPP的區(qū)別
通過分析NUMA和MPP服務(wù)器的內(nèi)部架構(gòu)和工作原理不難發(fā)現(xiàn)其差異所在。
節(jié)點(diǎn)互聯(lián)機(jī)制不同。NUMA的節(jié)點(diǎn)互聯(lián)機(jī)制是在同一個(gè)物理服務(wù)器內(nèi)部實(shí)現(xiàn),當(dāng)某個(gè)CPU需要進(jìn)行遠(yuǎn)地內(nèi)存訪問時(shí),它必須等待,這也是NUMA服務(wù)器無(wú)法實(shí)現(xiàn)CPU增加時(shí)性能線性擴(kuò)展的主要原因。而MPP的節(jié)點(diǎn)互聯(lián)機(jī)制是在不同的SMP服務(wù)器外部通過I/O實(shí)現(xiàn)的,每個(gè)節(jié)點(diǎn)只訪問本地內(nèi)存和存儲(chǔ),節(jié)點(diǎn)之間的信息交互與節(jié)點(diǎn)本身的處理是并行進(jìn)行的。因此,MPP在增加節(jié)點(diǎn)時(shí)性能基本上可以實(shí)現(xiàn)線性擴(kuò)展。
內(nèi)存訪問機(jī)制不同。在NUMA服務(wù)器內(nèi)部,任何一個(gè)CPU可以訪問整個(gè)系統(tǒng)的內(nèi)存,但遠(yuǎn)地訪問的性能遠(yuǎn)遠(yuǎn)低于本地內(nèi)存訪問,因此在開發(fā)應(yīng)用程序時(shí)應(yīng)該盡量避免遠(yuǎn)地內(nèi)存訪問。在MPP服務(wù)器中,每個(gè)節(jié)點(diǎn)只訪問本地內(nèi)存,不存在遠(yuǎn)地內(nèi)存訪問的問題。

哪種服務(wù)器技術(shù)更適合于數(shù)據(jù)倉(cāng)庫(kù)環(huán)境?
回答這個(gè)問題,需要從數(shù)據(jù)倉(cāng)庫(kù)環(huán)境本身的負(fù)載特征入手。典型的數(shù)據(jù)倉(cāng)庫(kù)環(huán)境具有大量復(fù)雜的數(shù)據(jù)處理和綜合分析,要求系統(tǒng)具有很高的I/O處理能力,并且存儲(chǔ)系統(tǒng)需要提供足夠的I/O帶寬與之匹配。
從NUMA架構(gòu)來(lái)看,它可以在一個(gè)物理服務(wù)器內(nèi)集成許多CPU,使系統(tǒng)具有較高的事務(wù)處理能力,由于遠(yuǎn)地內(nèi)存訪問時(shí)延遠(yuǎn)長(zhǎng)于本地內(nèi)存訪問,因此需要盡量減少不同CPU模塊之間的數(shù)據(jù)交互。顯然,NUMA架構(gòu)當(dāng)用于數(shù)據(jù)倉(cāng)庫(kù)環(huán)境時(shí),由于大量復(fù)雜的數(shù)據(jù)處理必然導(dǎo)致大量的數(shù)據(jù)交互,將使CPU的利用率大大降低。
相對(duì)而言,MPP服務(wù)器架構(gòu)的并行處理能力更優(yōu)越,更適合于復(fù)雜的數(shù)據(jù)綜合分析與處理環(huán)境。當(dāng)然,它需要借助于支持MPP技術(shù)的關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)來(lái)屏蔽節(jié)點(diǎn)之間負(fù)載平衡與調(diào)度的復(fù)雜性。另外,這種并行處理能力也與節(jié)點(diǎn)互聯(lián)網(wǎng)絡(luò)有很大的關(guān)系。顯然,適應(yīng)于數(shù)據(jù)倉(cāng)庫(kù)環(huán)境的MPP服務(wù)器,其節(jié)點(diǎn)互聯(lián)網(wǎng)絡(luò)的I/O性能應(yīng)該非常突出,才能充分發(fā)揮整個(gè)系統(tǒng)的性能。(本文作者為NCR中國(guó)存儲(chǔ)事業(yè)部產(chǎn)品經(jīng)理。