架構師之路 - 服務器硬件掃盲

不少架構師都是從軟件開發成長起來的,你們在軟件領域都有很深的造詣,大部分人對硬件接觸的不多。而成爲架構師後須要頻繁的跟人 、硬件 、軟件 、網絡打交道,本篇文章就給你們帶來服務器硬件方面的相關知識,主要包括服務器、CPU、內存、磁盤、網卡。node

服務器

根據服務器的外形和使用場景咱們將服務器分爲如下四種:程序員

  • 塔式服務器
    image.png
    塔式服務器相似於臺式機,主要適用於沒有機房機架的公司,通常存放於中小辦公環境。
  • 機架式服務器
    image.png
    機架式服務器須要放置在標準機櫃中,多存放於數據中心。
  • 刀片服務器
    image.png
    刀片服務器爲了提供更高的密度,它比機架式服務器更節省空間,同時,散熱問題也更突出,每每要在機箱內裝上大型強力風扇來散熱,通常應用於大型的數據中心或者須要大規模計算的領域。
  • 高密度服務器
    image.png
    高密度服務器是爲了實現更高的空間利用率。

主板架構

服務器的機箱只是外殼,核心架構仍是主板。算法

image.png

這個圖是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信息併發

image.png

上圖服務器CPU顯示有72個,是由於有2個Socket,每一個Socket有18核而每核能夠同時運行2個線程,經過 2 x 18 x 2 = 72 獲得。負載均衡

廠商

  • 國外的CPU廠商主要有:Intel、AMD
  • 國內的CPU廠商主要有:龍芯、兆芯、飛騰、海光、申威、華爲等

主流產品介紹

Intel系列

Intel如今主推的是「Intel至強可擴展」系列,在這個系列下又分爲四檔:鉑金、金、銀、銅,每檔下面又有不一樣的型號

image.png

AMD系列

AMD系列主要用到的是霄龍系列,霄龍系列CPU核數很高,下面咱們看看幾款具體的產品

型號 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(低功耗級)

  • 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
  • 8通道DDR4控制器
  • PCIe 4.0 ,100GE,CCIX
  • 支持2/4路互聯

主流CPU型號性能橫向對比

image.png

經過上圖你們能夠看到國產CPU與國外CPU之間的差距,性能基本只有Intel中檔CPU性能的一半左右,國產CPU還有很長的路要走。

NUMA

NUMA 即 Non-Uiform Memory Access(非一致性內存訪問),結合咱們以前講述的主板架構,兩顆CPU之間有一個通道,每一個CPU與各自的內存通道進行直連,能夠經過下圖直觀看出。

image.png

CPU0 訪問 左邊的內存通道速度很快,CPU1訪問右邊的內存通道也很快,當CPU1要訪問左邊的內存通道必需要藉助CPU0的幫忙,須要先經過QPI總線找到CPU0,再來訪問左邊的內存通道,這就產生了額外的開銷,訪問左邊內存通道的開銷至關於直連訪問右邊通道開銷的3倍。

因此對於計算密集型任務咱們須要儘可能避免這種跨CPU的內存訪問,這就是NUMA的問題,非一致性指的是訪問本地和跨CPU訪問的代價差異不一致

咱們能夠經過指令 numactl -s 查看numa的信息

image.png

可使用指令 numactl --cpunodebind=0 --membind=0 command 指定進程使用的numa節點和內存

如上就是讓 command 指令只使用cpu0 ,和內存0,這就使得進程指令在運行的時候使用的CPU和內存在同一側,達到計算性能速度最大化的效果。

內存

內存你們平時工做中接觸的都比較多,對於內存咱們主要經過如下幾個方面來了解:

  • 內存規格
    DDR三、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 指令查看內存信息,效果以下:

image.png

  • 可使用 dmidecode -t memory | grep Size 指令查看內存大小並判斷內存是否正常工做

image.png

將內存插入主板時通常須要對稱插入,經過上圖咱們能夠看到下面有根內存不工做。

  • 能夠經過 free 指令查看內存容量

image.png

系統剩餘內存 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是關鍵衡量指標。

對於大量順序讀寫的應用,則更關注吞吐量指標。

讀取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主要有7種綁定模式:

  • 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)
    在該模式下,操做系統和交換機都會建立一個聚合組,在同一聚合組下的網口共享一樣的速率和雙工設定。

小結

本文給你們介紹了服務器硬件的基礎知識,只有對硬件有了全面的認識何瞭解咱們才能在硬件選型時作到心中有溝壑,能夠針對各個組件的特色選取合適的硬件來支撐其運行。


這裏爲你們準備了一份小小的禮物,關注公衆號,輸入以下代碼,便可得到百度網盤地址,無套路領取!

001:《程序員必讀書籍》
002:《從無到有搭建中小型互聯網公司後臺服務架構與運維架構》
003:《互聯網企業高併發解決方案》
004:《互聯網架構教學視頻》
006:《SpringBoot實現點餐系統》
007:《SpringSecurity實戰視頻》
008:《Hadoop實戰教學視頻》
009:《騰訊2019Techo開發者大會PPT》
010: 微信交流羣

image.png

相關文章
相關標籤/搜索