商用服務(wù)器的多處理器架構(gòu)
今天和大家一起聊聊--服務(wù)器多處理器架構(gòu),在查閱相關(guān)資料的過程中,發(fā)現(xiàn)這是個(gè)容易被噴的話題,搞得我慌的一批。
本文并不會(huì)從邏輯電路、芯片設(shè)計(jì)、cpu歷史等等角度去闡述,水平有限實(shí)戰(zhàn)第一,通過本文你將了解到以下內(nèi)容:
-
物理核心 & 邏輯核心 -
多處理器架構(gòu):SMP、NUMA、MPP
1.物理核和邏輯核
說到CPU首先想到的可能是這樣的:
圖1 英特爾代號(hào)為Cooper Lake的至強(qiáng)鉑金9200處理器
該系列CPU物理封裝長(zhǎng)寬尺寸為76.0×72.5毫米,也是目前Intel史上最大的處理器,那CPU里面是什么樣子呢?
在CPU內(nèi)部封裝了1個(gè)或者多個(gè)物理核,物理核有獨(dú)立的各級(jí)緩存和電路結(jié)構(gòu),如果只有1個(gè)物理核心就是單核CPU,有多個(gè)物理核心就是多核CPU。
圖2 4核CPU內(nèi)部結(jié)構(gòu)簡(jiǎn)圖
對(duì)于處理器規(guī)格一致的服務(wù)器來說,總的物理核心數(shù)計(jì)算方法為:
物理核心數(shù)=總CPU數(shù)*單CPU中物理核心數(shù)
圖3 多CPU多物理核簡(jiǎn)圖
超線程是intel于2002年發(fā)布的一種技術(shù),全名為Hyper-Threading,簡(jiǎn)寫為HT技術(shù),超線程技術(shù)最初只是應(yīng)用于至強(qiáng)系列處理器中,之后陸續(xù)應(yīng)用在奔騰系列中并將技術(shù)主流化,業(yè)界對(duì)于HT的評(píng)價(jià)不一,但是官方并未放棄超線程技術(shù)。
簡(jiǎn)單來說,HT技術(shù)可使處理器中的1顆物理核,如同2顆物理核那樣發(fā)揮作用,從而提高了系統(tǒng)的整體性能,但是肯定也不會(huì)真的像2顆物理核那樣,要不然就違背物理規(guī)律了,只是說借助于某些技術(shù)將1顆物理核的性能發(fā)揮地更好而已。
對(duì)于處理器規(guī)格一致的服務(wù)器來說,總的邏輯核心數(shù)計(jì)算方法為:
開啟HT: 邏輯核心數(shù)=總CPU數(shù)*單CPU中物理核心數(shù)*2
未開啟HT: 邏輯核心數(shù)=物理核心數(shù)=總CPU數(shù)*單CPU中物理核心數(shù)
掌握CPU&物理核心&邏輯核心三者的關(guān)系之后,可以找一臺(tái)服務(wù)器看看相關(guān)配置,小試牛刀。
2.多處理器架構(gòu)
CPU多了就需要考慮如何設(shè)計(jì),也就出現(xiàn)了幾種不同的多處理器架構(gòu)。
目前服務(wù)器大體可以分為三類:
-
對(duì)稱多處理器結(jié)構(gòu) SMP -
非一致存儲(chǔ)訪問結(jié)構(gòu) NUMA -
海量并行處理結(jié)構(gòu) MPP
對(duì)于我們來說,SMP和NUMA應(yīng)該接觸的比較多,MPP接觸的少一些。
2.1 SMP對(duì)稱多處理器結(jié)構(gòu)
SMP是Symmetric Multi-Processor的縮寫。
對(duì)稱多處理器結(jié)構(gòu)是指多個(gè)CPU對(duì)稱平等,共享相同的物理內(nèi)存/IO等資源,因此SMP結(jié)構(gòu)屬于一致存儲(chǔ)器訪問結(jié)構(gòu) UMA。
圖5 SMP架構(gòu)簡(jiǎn)圖
共享模式下所有CPU平等地使用資源,模式簡(jiǎn)單,在CPU數(shù)量不多時(shí)效率很不錯(cuò),但是優(yōu)點(diǎn)也可能變?yōu)閿r路虎。
試想一種場(chǎng)景如果在SMP模式下為了提高服務(wù)器的處理能力,我們水平擴(kuò)展了CPU數(shù)量,這些CPU通過相同的總線訪問內(nèi)存。
隨著CPU數(shù)量的增加,相同內(nèi)存地址訪問沖突將明顯增加,間接造成了CPU資源浪費(fèi),相關(guān)實(shí)驗(yàn)證明,SMP服務(wù)器最好的情況是2-4個(gè)CPU。
2.2 NUMA非一致存儲(chǔ)訪問結(jié)構(gòu)
前面提到的SMP架構(gòu)是一致存儲(chǔ)器訪問結(jié)構(gòu)UMA,相對(duì)地就有了Non-Uniform Memory Access架構(gòu),所以NUMA結(jié)構(gòu)和SMP架構(gòu)的顯著區(qū)別在于是否是一致對(duì)等訪問內(nèi)存。
NUMA架構(gòu)的服務(wù)器具有多個(gè) CPU 模塊,每個(gè) CPU 模塊由多個(gè) CPU組成,每個(gè)CPU模塊具有獨(dú)立的本地內(nèi)存Local-Memory、 I/O等資源,可以將CPU模塊稱為Node。
圖7 NUMA架構(gòu)CPU模塊內(nèi)部結(jié)構(gòu)
Node之間可以通過互聯(lián)模塊進(jìn)行數(shù)據(jù)交互,因此每個(gè) CPU 模塊仍然可以訪問整個(gè)系統(tǒng)的內(nèi)存,但是此時(shí)的內(nèi)存有本地和外部之分了,訪問速度自然也就不一樣。
訪問CPU模塊的本地內(nèi)存將遠(yuǎn)遠(yuǎn)快于訪問其他CPU模塊內(nèi)存,在明確這種架構(gòu)帶來的內(nèi)存訪問差異后,我們?cè)趯?shí)際開發(fā)應(yīng)用程序時(shí)需要盡量減少不同 CPU 模塊之間的信息交互。
圖8 NUMA架構(gòu)整體簡(jiǎn)圖
NUMA 技術(shù)同樣有缺陷,由于訪問遠(yuǎn)地內(nèi)存的延時(shí)遠(yuǎn)遠(yuǎn)超過本地內(nèi)存,當(dāng) CPU 數(shù)量增加時(shí),系統(tǒng)性能無法線性增加,換句話說增加1倍的CPU數(shù)量并不能獲得1倍的性能提升,因此仍然存在擴(kuò)展限制區(qū)。
2.3 MPP海量并行處理結(jié)構(gòu)
MPP是Massive Parallel Processing的縮寫,MPP 是另外一種系統(tǒng)擴(kuò)展的方式,它由多個(gè) SMP 服務(wù)器通過一定的節(jié)點(diǎn)互聯(lián)網(wǎng)絡(luò)進(jìn)行連接,完成相同的任務(wù),可以看作是SMP的水平擴(kuò)展。
在MPP結(jié)構(gòu)中多個(gè) SMP 服務(wù)器是一種完全無共享Share Nothing)結(jié)構(gòu),因而擴(kuò)展能力最好,典型的就是刀片服務(wù)器,有的文章說MPP架構(gòu)很像MapReduce模式,多個(gè)SMP服務(wù)器節(jié)點(diǎn)之間通過互聯(lián)網(wǎng)絡(luò)實(shí)現(xiàn),目前并沒有統(tǒng)一的數(shù)據(jù)通信協(xié)議,并且這部分交互協(xié)議對(duì)用戶是無感知的。
MPP架構(gòu)有點(diǎn)像刀片服務(wù)器的感覺,每一片都是獨(dú)立的,片與片直接由特定的協(xié)議進(jìn)行數(shù)據(jù)交互。
圖9 MPP架構(gòu)簡(jiǎn)圖
3 小結(jié)
本文的內(nèi)容并不多,先闡述了一些關(guān)于CPU&物理核&邏輯核的常識(shí),然后對(duì)多處理器服務(wù)器的常見的三種架構(gòu),每種架構(gòu)都有不同的特定和使用場(chǎng)景,建議重點(diǎn)關(guān)注NUMA,可惜的是本文并沒有展開太多。
水文一篇,先到這里,感謝各位的傾情閱讀。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場(chǎng),如有問題,請(qǐng)聯(lián)系我們,謝謝!