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