不少架構師都是從軟件開發成長起來的,你們在軟件領域都有很深的造詣,大部分人對硬件接觸的不多。而成爲架構師後須要頻繁的跟人 、硬件 、軟件 、網絡打交道,本篇文章就給你們帶來服務器硬件方面的相關知識,主要包括服務器、CPU、內存、磁盤、網卡。node
根據服務器的外形和使用場景咱們將服務器分爲如下四種:算法
服務器的機箱只是外殼,核心架構仍是主板。編程
這個圖是Intel典型的主板芯片組架構:服務器的主板有個統一的中央芯片組(Intel C600),芯片組能夠鏈接多個CPU(E5-2400/2600),CPU之間經過QPI快速通道進行鏈接,CPU與內存插槽,PCIE插槽之間鏈接,芯片組還與低速的外設進行鏈接(USB、網卡、SATA等)。服務器
作服務選型主要基於如下幾個方面:網絡
CPU做爲服務器的核心固件,咱們主要經過如下幾個概念來了解:架構
以上的這些概念數據能夠經過CPU的產品規格書中進行詳細瞭解。在服務器上能夠經過 lscpu 命令查看cpu信息併發
上圖服務器CPU顯示有72個,是由於有2個Socket,每一個Socket有18核而每核能夠同時運行2個線程,經過 2 x 18 x 2 = 72 獲得。負載均衡
Intel如今主推的是「Intel至強可擴展」系列,在這個系列下又分爲四檔:鉑金、金、銀、銅,每檔下面又有不一樣的型號編程語言
AMD系列主要用到的是霄龍系列,霄龍系列CPU核數很高,下面咱們看看幾款具體的產品ide
型號 | CPU核心數 | 線程數量 | 最大加速時鐘頻率 | 基準時鐘頻率 | 默認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(低功耗級)」
「鯤鵬920-3326/4826(極致效能型)」
「鯤鵬920-3326/4826(極致性能級)」
經過上圖你們能夠看到國產CPU與國外CPU之間的差距,性能基本只有Intel中檔CPU性能的一半左右,國產CPU還有很長的路要走。
NUMA 即 Non-Uiform Memory Access(非一致性內存訪問),結合咱們以前講述的主板架構,兩顆CPU之間有一個通道,每一個CPU與各自的內存通道進行直連,能夠經過下圖直觀看出。
CPU0 訪問 左邊的內存通道速度很快,CPU1訪問右邊的內存通道也很快,當CPU1要訪問左邊的內存通道必需要藉助CPU0的幫忙,須要先經過QPI總線找到CPU0,再來訪問左邊的內存通道,這就產生了額外的開銷,訪問左邊內存通道的開銷至關於直連訪問右邊通道開銷的3倍。
「因此對於計算密集型任務咱們須要儘可能避免這種跨CPU的內存訪問,這就是NUMA的問題,非一致性指的是訪問本地和跨CPU訪問的代價差異不一致」
咱們能夠經過指令 numactl -s 查看numa的信息
可使用指令 numactl --cpunodebind=0 --membind=0 command 指定進程使用的numa節點和內存
如上就是讓 command 指令只使用cpu0 ,和內存0,這就使得進程指令在運行的時候使用的CPU和內存在同一側,達到計算性能速度最大化的效果。
內存你們平時工做中接觸的都比較多,對於內存咱們主要經過如下幾個方面來了解:
主要經過如下三個命令全面瞭解內存信息
將內存插入主板時通常須要對稱插入,經過上圖咱們能夠看到下面有根內存不工做。
系統剩餘內存 available 是咱們最關心的一個值,不要被free列唬住了。
對於磁盤咱們主要經過吞吐率和IOPS兩個指標來對其衡量
「吞吐率/吞吐量」:單位時間內讀寫的數據量
「IOPS」:每秒IO操做的次數
爲何不少性能比較慢的服務在軟件層面進行優化收益很小,而更換一塊固態硬盤就能解決全部問題,問題就在這裏。
普通固態硬盤的吞吐率大概爲機械硬盤的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)
在該模式下,操做系統和交換機都會建立一個聚合組,在同一聚合組下的網口共享一樣的速率和雙工設定。