架構(gòu)師之路 - 服務器硬件掃盲

很多架構(gòu)師都是從軟件開發(fā)成長起來的,大家在軟件領域都有很深的造詣,大部分人對硬件接觸的很少。而成為架構(gòu)師后需要頻繁的跟人 、硬件 、軟件 、網(wǎng)絡打交道,本篇文章就給大家?guī)矸掌饔布矫娴南嚓P(guān)知識,主要包括服務器、CPU、內(nèi)存、磁盤、網(wǎng)卡。
服務器
根據(jù)服務器的外形和使用場景我們將服務器分為以下四種:
塔式服務器
塔式服務器類似于臺式機,主要適用于沒有機房機架的公司,一般存放于中小辦公環(huán)境。機架式服務器
機架式服務器需要放置在標準機柜中,多存放于數(shù)據(jù)中心。刀片服務器
刀片服務器為了提供更高的密度,它比機架式服務器更節(jié)省空間,同時,散熱問題也更突出,往往要在機箱內(nèi)裝上大型強力風扇來散熱,一般應用于大型的數(shù)據(jù)中心或者需要大規(guī)模計算的領域。高密度服務器
高密度服務器是為了實現(xiàn)更高的空間利用率。
主板架構(gòu)
服務器的機箱只是外殼,核心架構(gòu)還是主板。

這個圖是Intel典型的主板芯片組架構(gòu):服務器的主板有個統(tǒng)一的中央芯片組(Intel C600),芯片組可以連接多個CPU(E5-2400/2600),CPU之間通過QPI快速通道進行連接,CPU與內(nèi)存插槽,PCIE插槽之間連接,芯片組還與低速的外設進行連接(USB、網(wǎng)卡、SATA等)。
服務器選型考慮因素
做服務選型主要基于以下幾個方面:
限制條件:操作系統(tǒng)OS、客戶喜好及預算、應用系統(tǒng)的編程語言 部署規(guī)模:如果規(guī)模較大,需要考慮空間占用問題,可考慮刀片或高密度服務器 擴展性:內(nèi)存數(shù)量、磁盤數(shù)量、PCI插槽數(shù)量 穩(wěn)定性 OS:UNIX > Linux > Windows 硬件:小型機 > x86服務器 物理機、虛擬機、容器 計算特點的考慮:是要將一個大的計算能力進行分割,靈活分配,還是有一個很大的課題要用多臺機器聯(lián)合計算 IO特點的考慮:吞吐率與IOPS多大?虛擬機能否承受?
服務器廠商
國內(nèi)的服務器廠商主要有:曙光、華為、浪潮、H3C、聯(lián)想、長城等 國外的服務器廠商主要有:Dell、HP、IBM
CPU
CPU作為服務器的核心固件,我們主要通過以下幾個概念來了解:
Socket Socket俗稱多少路,就是一個服務器主板上可以安裝幾個物理CPU Core 一個物理CPU實際可以有幾個內(nèi)核(Core),比如我們經(jīng)常聽到的32核64核、128核等等 超線程 如果一個內(nèi)核可以同時運行2個線程我們就稱這個CPU具有超線程能力,反之則不具備超線程能力 頻率 也叫主頻,這個越高越好 內(nèi)存通道 每個CPU能支撐的最大內(nèi)存數(shù),Intel最新的能支持6個 內(nèi)存帶寬、內(nèi)存規(guī)格 CPU支持什么規(guī)格的內(nèi)存,支持的頻率范圍是多少
以上的這些概念數(shù)據(jù)可以通過CPU的產(chǎn)品規(guī)格書中進行詳細了解。在服務器上可以通過 lscpu 命令查看cpu信息

上圖服務器CPU顯示有72個,是因為有2個Socket,每個Socket有18核而每核可以同時運行2個線程,通過 2 x 18 x 2 = 72 得到。
廠商
國外的CPU廠商主要有:Intel、AMD 國內(nèi)的CPU廠商主要有:龍芯、兆芯、飛騰、海光、申威、華為等
主流產(chǎn)品介紹
Intel系列
Intel現(xiàn)在主推的是“Intel至強可擴展”系列,在這個系列下又分為四檔:鉑金、金、銀、銅,每檔下面又有不同的型號

AMD系列
AMD系列主要用到的是霄龍系列,霄龍系列CPU核數(shù)很高,下面我們看看幾款具體的產(chǎn)品
| 型號 | CPU核心數(shù) | 線程數(shù)量 | 最大加速時鐘頻率 | 基準時鐘頻率 | 默認TDP/TDP |
|---|---|---|---|---|---|
| 霄龍7742 | 64 | 128 | 高達3.4GHZ | 2.25GHZ | 225W |
| 霄龍7702 | 64 | 128 | 高達3.35GHZ | 2GHZ | 200W |
| 霄龍7702P | 64 | 128 | 高達3.4GHZ | 2GHZ | 200W |
| 霄龍7642 | 48 | 96 | 高達3.35GHZ | 2.3GHZ | 225W |
| 霄龍7552 | 48 | 96 | 高達3.3GHZ | 2.2GHZ | 200W |
| 霄龍7542 | 32 | 64 | 高達3.4GHZ | 2.9GHZ | 225W |
華為鯤鵬系列
「鯤鵬916(低功耗級)」
32核/2.4GHz/16nm/75W 4通道DDR4控制器 PCIe 3.0 ,10GE 支持2路互聯(lián)
「鯤鵬920-3326/4826(極致效能型)」
32/48核/2.6GHz/7nm/120/150W 8通道DDR4控制器 PCIe 4.0 ,100GE,CCIX 支持2/4路互聯(lián)
「鯤鵬920-3326/4826(極致性能級)」
64核/2.6GHz/7nm/180W 8通道DDR4控制器 PCIe 4.0 ,100GE,CCIX 支持2/4路互聯(lián)
主流CPU型號性能橫向?qū)Ρ?/span>

通過上圖大家可以看到國產(chǎn)CPU與國外CPU之間的差距,性能基本只有Intel中檔CPU性能的一半左右,國產(chǎn)CPU還有很長的路要走。
NUMA
NUMA 即 Non-Uiform Memory Access(非一致性內(nèi)存訪問),結(jié)合我們之前講述的主板架構(gòu),兩顆CPU之間有一個通道,每個CPU與各自的內(nèi)存通道進行直連,可以通過下圖直觀看出。

CPU0 訪問 左邊的內(nèi)存通道速度很快,CPU1訪問右邊的內(nèi)存通道也很快,當CPU1要訪問左邊的內(nèi)存通道必須要借助CPU0的幫忙,需要先通過QPI總線找到CPU0,再來訪問左邊的內(nèi)存通道,這就產(chǎn)生了額外的開銷,訪問左邊內(nèi)存通道的開銷相當于直連訪問右邊通道開銷的3倍。
「所以對于計算密集型任務我們需要盡量避免這種跨CPU的內(nèi)存訪問,這就是NUMA的問題,非一致性指的是訪問本地和跨CPU訪問的代價差別不一致」
我們可以通過指令 numactl -s 查看numa的信息

可以使用指令 numactl --cpunodebind=0 --membind=0 command 指定進程使用的numa節(jié)點和內(nèi)存
如上就是讓 command 指令只使用cpu0 ,和內(nèi)存0,這就使得進程指令在運行的時候使用的CPU和內(nèi)存在同一側(cè),達到計算性能速度最大化的效果。
內(nèi)存
內(nèi)存大家平時工作中接觸的都比較多,對于內(nèi)存我們主要通過以下幾個方面來了解:
內(nèi)存規(guī)格
DDR3、DDR4,目前主流已經(jīng)是DDR4內(nèi)存大小
2G、4G、8G、16G、32G內(nèi)存頻率
1333MHz, 1600MHz, 1866MHz、2133MHz, 2400MHz , 2666MHz帶寬
即CPU對內(nèi)存實際讀寫數(shù)據(jù)的速度,DDR4 2400內(nèi)存的帶寬為30GB/s左右通道
一個CPU可以連接多個內(nèi)存,CPU上的內(nèi)存通道數(shù)指的是CPU能并發(fā)訪問直連多少個內(nèi)存。4通道表示CPU可以同時訪問與之直連的4根內(nèi)存,這樣就能達到帶寬翻四倍的效果。
在4通道模式下讀取1G的數(shù)據(jù)進內(nèi)存,最終數(shù)據(jù)會分布在4根內(nèi)存上而不是一根內(nèi)存,這就實現(xiàn)了速度的翻4倍;
每顆CPU對自己的內(nèi)存控制器直連的內(nèi)存訪問速度較快,要訪問另一顆CPU連接的內(nèi)存時,需要通過QPI總線,開銷為本地內(nèi)存的3倍。
了解內(nèi)存信息
主要通過以下三個命令全面了解內(nèi)存信息
我們可以通過 dmidecode -t memory | more指令查看內(nèi)存信息,效果如下:

可以使用 dmidecode -t memory | grep Size指令查看內(nèi)存大小并判斷內(nèi)存是否正常工作

將內(nèi)存插入主板時一般需要對稱插入,通過上圖我們可以看到下面有根內(nèi)存不工作。
可以通過 free指令查看內(nèi)存容量

系統(tǒng)剩余內(nèi)存 available 是我們最關(guān)心的一個值,不要被free列唬住了。
磁盤
對于磁盤我們主要通過吞吐率和IOPS兩個指標來對其衡量
「吞吐率/吞吐量」:單位時間內(nèi)讀寫的數(shù)據(jù)量
機械硬盤:約100MB/s – 200MB/s; 普通固態(tài)硬盤:200MB/s - 500MB/s; PCIE固態(tài)硬盤(直連CPU):900MB/s - 3GB/s
「IOPS」:每秒IO操作的次數(shù)
機械硬盤:100-200 普通固態(tài)硬盤:30000-50000 PCIE固態(tài)硬盤(直連CPU):數(shù)十萬
為什么很多性能比較慢的服務在軟件層面進行優(yōu)化收益很小,而更換一塊固態(tài)硬盤就能解決所有問題,問題就在這里。
普通固態(tài)硬盤的吞吐率大概為機械硬盤的2~3倍,而IOPS卻達到了機械硬盤的250~300倍。
「IOPS和數(shù)據(jù)吞吐量適用于不同的場合:」
在隨機讀寫頻繁的應用中,如OLTP(Online Transaction Processing),IOPS是關(guān)鍵衡量指標。
對于大量順序讀寫的應用,則更關(guān)注吞吐量指標。
e.g:
讀取10000個1KB文件,用時10秒 ?Throught(吞吐量)=1MB/s ,IOPS=1000 ?追求IOPS
讀取1個10MB文件,用時0.2秒 ?Throught(吞吐量)=50MB/s, IOPS=5 追求吞吐量
網(wǎng)卡
網(wǎng)卡,又稱網(wǎng)絡適配器或網(wǎng)絡接口卡,英文名為Network Interface Card。在網(wǎng)絡中,如果有一臺計算機沒有網(wǎng)卡,那么這臺計算機將不能和其他計算機通信,它將得不到服務器所提供的任何服務了。當然如果沒有網(wǎng)卡,就稱不上服務器了,所以說網(wǎng)卡是服務器必備的設備,就像普通PC(個人電腦)要配處理器一樣。
我們也可以也通過以下幾個維度來了解下網(wǎng)卡:
「網(wǎng)卡速度規(guī)格」
?100M、1G、10G、25G
「網(wǎng)卡接口類型」
?RJ45(電、短距離)、光纖(光、長距離)
「網(wǎng)卡綁定模式」
多網(wǎng)卡綁定一方面能夠提高網(wǎng)絡吞吐量,另一方面也可以增強網(wǎng)絡高可用。從軟件的角度來看,多網(wǎng)卡綁定實際上只需要提供一個額外的bond驅(qū)動程序即可,通過該虛擬網(wǎng)卡驅(qū)動程序可以將實際多塊網(wǎng)卡屏蔽,對TCP/IP協(xié)議層而言只存在一個Bond網(wǎng)卡。
Linux主要有以下幾種綁定模式:
broadcast (廣播策略:data is transmitted over all ports)
這種模式的特點是一個報文會復制兩份往bond下的兩個接口分別發(fā)送出去。當有對端交換機失效,我們感覺不到任何丟包。round-robin (輪詢策略:data is transmitted over all ports in turn)
該模式下,鏈路處于負載均衡狀態(tài),數(shù)據(jù)以輪詢方式向每條鏈路發(fā)送報文,基于per packet方式發(fā)送。即每條鏈路各一個數(shù)據(jù)包,這模式好處在于增加了帶寬,同時支持容錯能力,當有鏈路出問題,會把流量切換到正常的鏈路上。
active-backup (主備策略:one port or link is used while others are kept as a backup)
在該模式下,一個端口處于主狀態(tài),一個處于備狀態(tài),所有流量都在主鏈路上發(fā)出和接收,備鏈路不會有任何流量。當主端口down掉時,備端口接管主狀態(tài)。loadbalance (適配器傳輸負載均衡:with active Tx load balancing and BPF-based Tx portselectors)
在該模式下,通過源和目標mac做hash因子來做xor算法來選擇鏈路,這樣就使得到達特定對端的流量總是從同一個接口上發(fā)出。lacp (動態(tài)鏈路聚合:implements the 802.3ad Link Aggregation Control Protocol)
在該模式下,操作系統(tǒng)和交換機都會創(chuàng)建一個聚合組,在同一聚合組下的網(wǎng)口共享同樣的速率和雙工設定。
小結(jié)
本文給大家介紹了服務器硬件的基礎知識,只有對硬件有了全面的認識和了解我們才能在硬件選型時做到心中有溝壑,可以針對各個組件的特點選取合適的硬件來支撐其運行。

3.?大型網(wǎng)站架構(gòu)演化發(fā)展歷程
8. 深入理解 MySQL:快速學會分析SQL執(zhí)行效率

掃碼二維碼關(guān)注我
·end·
—如果本文有幫助,請分享到朋友圈吧—
我們一起愉快的玩耍!

