很多架構師都是從軟體開發成長起來的,大家在軟體領域都有很深的造詣,大部分人對硬體接觸的很少。而成為架構師後需要頻繁的跟人 、硬體 、軟體 、網絡打交道,本篇文章就給大家帶來伺服器硬體方面的相關知識,主要包括伺服器、CPU、記憶體、磁盤、網卡。
伺服器
根據伺服器的外形和使用場景我們将伺服器分為以下四種:
- 塔式伺服器

塔式伺服器類似于桌上型電腦,主要适用于沒有機房機架的公司,一般存放于中小辦公環境。
- 機架式伺服器
機架式伺服器需要放置在标準機櫃中,多存放于資料中心。
- 刀片伺服器
刀片伺服器為了提供更高的密度,它比機架式伺服器更節省空間,同時,散熱問題也更突出,往往要在機箱内裝上大型強力風扇來散熱,一般應用于大型的資料中心或者需要大規模計算的領域。
- 高密度伺服器
高密度伺服器是為了實作更高的空間使用率。
主機闆架構
伺服器的機箱隻是外殼,核心架構還是主機闆。
這個圖是Intel典型的主機闆晶片組架構:伺服器的主機闆有個統一的中央晶片組(Intel C600),晶片組可以連接配接多個CPU(E5-2400/2600),CPU之間通過QPI快速通道進行連接配接,CPU與記憶體插槽,PCIE插槽之間連接配接,晶片組還與低速的外設進行連接配接(USB、網卡、SATA等)。
伺服器選型考慮因素
做服務選型主要基于以下幾個方面:
- 限制條件:作業系統OS、客戶喜好及預算、應用系統的程式設計語言
- 部署規模:如果規模較大,需要考慮空間占用問題,可考慮刀片或高密度伺服器
- 擴充性:記憶體數量、磁盤數量、PCI插槽數量
- 穩定性
-
- OS:UNIX > Linux > Windows
- 硬體:小型機 > x86伺服器
- 實體機、虛拟機、容器
-
- 計算特點的考慮:是要将一個大的計算能力進行分割,靈活配置設定,還是有一個很大的課題要用多台機器聯合計算
- IO特點的考慮:吞吐率與IOPS多大?虛拟機能否承受?
伺服器廠商
- 國内的伺服器廠商主要有:曙光、華為、浪潮、H3C、聯想、長城等
- 國外的伺服器廠商主要有:Dell、HP、IBM
CPU
CPU作為伺服器的核心固件,我們主要通過以下幾個概念來了解:
- Socket Socket俗稱多少路,就是一個伺服器主機闆上可以安裝幾個實體CPU
- Core 一個實體CPU實際可以有幾個核心(Core),比如我們經常聽到的32核64核、128核等等
- 超線程 如果一個核心可以同時運作2個線程我們就稱這個CPU具有超線程能力,反之則不具備超線程能力
- 頻率 也叫主頻,這個越高越好
- 記憶體通道 每個CPU能支撐的最大記憶體數,Intel最新的能支援6個
- 記憶體帶寬、記憶體規格 CPU支援什麼規格的記憶體,支援的頻率範圍是多少
以上的這些概念資料可以通過CPU的産品規格書中進行詳細了解。在伺服器上可以通過
lscpu
指令檢視cpu資訊
cpu詳情
上圖伺服器CPU顯示有72個,是因為有2個Socket,每個Socket有18核而每核可以同時運作2個線程,通過
2 x 18 x 2 = 72
得到。
廠商
- 國外的CPU廠商主要有:Intel、AMD
- 國内的CPU廠商主要有:龍芯、兆芯、飛騰、海光、申威、華為等
主流産品介紹
Intel系列
Intel現在主推的是“Intel至強可擴充”系列,在這個系列下又分為四檔:鉑金、金、銀、銅,每檔下面又有不同的型号
intel系列對比
AMD系列
AMD系列主要用到的是霄龍系列,霄龍系列CPU核數很高,下面我們看看幾款具體的産品
型号 | CPU核心數 | 線程數量 | 最大加速時鐘頻率 | 基準時鐘頻率 | 預設TDP/TDP |
霄龍7742 | 64 | 128 | 高達3.4GHZ | 2.25GHZ | 225W |
霄龍7702 | 高達3.35GHZ | 2GHZ | 200W | ||
霄龍7702P | |||||
霄龍7642 | 48 | 96 | 2.3GHZ | ||
霄龍7552 | 高達3.3GHZ | 2.2GHZ | |||
霄龍7542 | 32 | 2.9GHZ |
華為鲲鵬系列
「鲲鵬916(低功耗級)」
- 32核/2.4GHz/16nm/75W
- 4通道DDR4控制器
- PCIe 3.0 ,10GE
- 支援2路互聯
「鲲鵬920-3326/4826(極緻效能型)」
- 32/48核/2.6GHz/7nm/120/150W
- 8通道DDR4控制器
- PCIe 4.0 ,100GE,CCIX
- 支援2/4路互聯
「鲲鵬920-3326/4826(極緻性能級)」
- 64核/2.6GHz/7nm/180W
主流CPU型号性能橫向對比
cpu性能對比
通過上圖大家可以看到國産CPU與國外CPU之間的差距,性能基本隻有Intel中檔CPU性能的一半左右,國産CPU還有很長的路要走。
NUMA
NUMA 即
Non-Uiform Memory Access
(非一緻性記憶體通路),結合我們之前講述的主機闆架構,兩顆CPU之間有一個通道,每個CPU與各自的記憶體通道進行直連,可以通過下圖直覺看出。
numa
CPU0 通路 左邊的記憶體通道速度很快,CPU1通路右邊的記憶體通道也很快,當CPU1要通路左邊的記憶體通道必須要借助CPU0的幫忙,需要先通過QPI總線找到CPU0,再來通路左邊的記憶體通道,這就産生了額外的開銷,通路左邊記憶體通道的開銷相當于直連通路右邊通道開銷的3倍。
「是以對于計算密集型任務我們需要盡量避免這種跨CPU的記憶體通路,這就是NUMA的問題,非一緻性指的是通路本地和跨CPU通路的代價差别不一緻」
我們可以通過指令
numactl -s
檢視numa的資訊
可以使用指令
numactl --cpunodebind=0 --membind=0 command
指定程序使用的numa節點和記憶體
如上就是讓
command
指令隻使用cpu0 ,和記憶體0,這就使得程序指令在運作的時候使用的CPU和記憶體在同一側,達到計算性能速度最大化的效果。
記憶體
記憶體大家平時工作中接觸的都比較多,對于記憶體我們主要通過以下幾個方面來了解:
-
記憶體規格
DDR3、DDR4,目前主流已經是DDR4
-
記憶體大小
2G、4G、8G、16G、32G
-
記憶體頻率
1333MHz, 1600MHz, 1866MHz、2133MHz, 2400MHz , 2666MHz
-
帶寬
即CPU對記憶體實際讀寫資料的速度,DDR4 2400記憶體的帶寬為30GB/s左右
-
通道
一個CPU可以連接配接多個記憶體,CPU上的記憶體通道數指的是CPU能并發通路直連多少個記憶體。4通道表示CPU可以同時通路與之直連的4根記憶體,這樣就能達到帶寬翻四倍的效果。
在4通道模式下讀取1G的資料進記憶體,最終資料會分布在4根記憶體上而不是一根記憶體,這就實作了速度的翻4倍;
每顆CPU對自己的記憶體控制器直連的記憶體通路速度較快,要通路另一顆CPU連接配接的記憶體時,需要通過QPI總線,開銷為本地記憶體的3倍。
了解記憶體資訊
主要通過以下三個指令全面了解記憶體資訊
- 我們可以通過
指令檢視記憶體資訊,效果如下:dmidecode -t memory | more
記憶體資訊
- 可以使用
指令檢視記憶體大小并判斷記憶體是否正常工作dmidecode -t memory | grep Size
檢視記憶體插槽
将記憶體插入主機闆時一般需要對稱插入,通過上圖我們可以看到下面有根記憶體不工作。
- 可以通過
指令檢視記憶體容量free
記憶體容量
系統剩餘記憶體 available 是我們最關心的一個值,不要被free列唬住了。
磁盤
對于磁盤我們主要通過吞吐率和IOPS兩個名額來對其衡量
「吞吐率/吞吐量」:機關時間内讀寫的資料量
- 機械硬碟:約100MB/s – 200MB/s;
- 普通固态硬碟:200MB/s - 500MB/s;
- PCIE固态硬碟(直連CPU):900MB/s - 3GB/s
「IOPS」:每秒IO操作的次數
- 機械硬碟:100-200
- 普通固态硬碟:30000-50000
- PCIE固态硬碟(直連CPU):數十萬
為什麼很多性能比較慢的服務在軟體層面進行優化收益很小,而更換一塊固态硬碟就能解決所有問題,問題就在這裡。
普通固态硬碟的吞吐率大概為機械硬碟的2~3倍,而IOPS卻達到了機械硬碟的250~300倍。
「IOPS和資料吞吐量适用于不同的場合:」
在随機讀寫頻繁的應用中,如OLTP(Online Transaction Processing),IOPS是關鍵衡量名額。
對于大量順序讀寫的應用,則更關注吞吐量名額。
e.g:
讀取10000個1KB檔案,用時10秒 Throught(吞吐量)=1MB/s ,IOPS=1000 追求IOPS
讀取1個10MB檔案,用時0.2秒 Throught(吞吐量)=50MB/s, IOPS=5 追求吞吐量
網卡
網卡,又稱網絡擴充卡或網絡接口卡,英文名為Network Interface Card。在網絡中,如果有一台計算機沒有網卡,那麼這台計算機将不能和其他計算機通信,它将得不到伺服器所提供的任何服務了。當然如果沒有網卡,就稱不上伺服器了,是以說網卡是伺服器必備的裝置,就像普通PC(個人電腦)要配處理器一樣。
我們也可以也通過以下幾個次元來了解下網卡:
「網卡速度規格」
100M、1G、10G、25G
「網卡接口類型」
RJ45(電、短距離)、光纖(光、長距離)
「網卡綁定模式」
多網卡綁定一方面能夠提高網絡吞吐量,另一方面也可以增強網絡高可用。從軟體的角度來看,多網卡綁定實際上隻需要提供一個額外的bond驅動程式即可,通過該虛拟網卡驅動程式可以将實際多塊網卡屏蔽,對TCP/IP協定層而言隻存在一個Bond網卡。
Linux主要有以下幾種綁定模式:
-
broadcast (廣播政策:data is transmitted over all ports)
這種模式的特點是一個封包會複制兩份往bond下的兩個接口分别發送出去。當有對端交換機失效,我們感覺不到任何丢包。
-
round-robin (輪詢政策:data is transmitted over all ports in turn)
該模式下,鍊路處于負載均衡狀态,資料以輪詢方式向每條鍊路發送封包,基于per packet方式發送。即每條鍊路各一個資料包,這模式好處在于增加了帶寬,同時支援容錯能力,當有鍊路出問題,會把流量切換到正常的鍊路上。
-
active-backup (主備政策:one port or link is used while others are kept as a backup)
在該模式下,一個端口處于主狀态,一個處于備狀态,所有流量都在主鍊路上發出和接收,備鍊路不會有任何流量。當主端口down掉時,備端口接管主狀态。
-
loadbalance (擴充卡傳輸負載均衡:with active Tx load balancing and BPF-based Tx portselectors)
在該模式下,通過源和目标mac做hash因子來做xor算法來選擇鍊路,這樣就使得到達特定對端的流量總是從同一個接口上發出。
-
lacp (動态鍊路聚合:implements the 802.3ad Link Aggregation Control Protocol)
在該模式下,作業系統和交換機都會建立一個聚合組,在同一聚合組下的網口共享同樣的速率和雙工設定。
小結
本文給大家介紹了伺服器硬體的基礎知識,隻有對硬體有了全面的認識和了解我們才能在硬體選型時做到心中有溝壑,可以針對各個元件的特點選取合适的硬體來支撐其運作。