很多架構師都是從軟體開發成長起來的,大家在軟體領域都有很深的造詣,大部分人對硬體接觸的很少。而成為架構師後需要頻繁的跟人 、硬體 、軟體 、網絡打交道,本篇文章就給大家帶來伺服器硬體方面的相關知識,主要包括伺服器、CPU、內存、磁碟、網卡。
伺服器根據伺服器的外形和使用場景我們將伺服器分為以下四種:
塔式伺服器塔式伺服器類似於臺式機,主要適用於沒有機房機架的公司,一般存放於中小辦公環境。機架式伺服器機架式伺服器需要放置在標準機櫃中,多存放於數據中心。刀片伺服器刀片伺服器為了提供更高的密度,它比機架式伺服器更節省空間,同時,散熱問題也更突出,往往要在機箱內裝上大型強力風扇來散熱,一般應用於大型的數據中心或者需要大規模計算的領域。高密度伺服器高密度伺服器是為了實現更高的空間利用率。主板架構伺服器的機箱只是外殼,核心架構還是主板。
主板架構這個圖是Intel典型的主板晶片組架構:伺服器的主板有個統一的中央晶片組(Intel C600),晶片組可以連接多個CPU(E5-2400/2600),CPU之間通過QPI快速通道進行連接,CPU與內存插槽,PCIE插槽之間連接,晶片組還與低速的外設進行連接(USB、網卡、SATA等)。
伺服器選型考慮因素做服務選型主要基於以下幾個方面:
限制條件:作業系統OS、客戶喜好及預算、應用系統的程式語言部署規模:如果規模較大,需要考慮空間佔用問題,可考慮刀片或高密度伺服器OS:UNIX > Linux > Windows計算特點的考慮:是要將一個大的計算能力進行分割,靈活分配,還是有一個很大的課題要用多臺機器聯合計算IO特點的考慮:吞吐率與IOPS多大?虛擬機能否承受?伺服器廠商國內的伺服器廠商主要有:曙光、華為、浪潮、H3C、聯想、長城等CPUCPU作為伺服器的核心固件,我們主要通過以下幾個概念來了解:
Socket Socket俗稱多少路,就是一個伺服器主板上可以安裝幾個物理CPUCore 一個物理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系列Intel現在主推的是「Intel至強可擴展」系列,在這個系列下又分為四檔:鉑金、金、銀、銅,每檔下面又有不同的型號
intel系列對比AMD系列主要用到的是霄龍系列,霄龍系列CPU核數很高,下面我們看看幾款具體的產品
型號CPU核心數線程數量最大加速時鐘頻率基準時鐘頻率默認TDP/TDP霄龍774264128高達3.4GHZ2.25GHZ225W霄龍770264128高達3.35GHZ2GHZ200W霄龍7702P64128高達3.4GHZ2GHZ200W霄龍76424896高達3.35GHZ2.3GHZ225W霄龍75524896高達3.3GHZ2.2GHZ200W霄龍75423264高達3.4GHZ2.9GHZ225W華為鯤鵬系列「鯤鵬916(低功耗級)」
「鯤鵬920-3326/4826(極致效能型)」
32/48核/2.6GHz/7nm/120/150W「鯤鵬920-3326/4826(極致性能級)」
主流CPU型號性能橫向對比cpu性能對比通過上圖大家可以看到國產CPU與國外CPU之間的差距,性能基本只有Intel中檔CPU性能的一半左右,國產CPU還有很長的路要走。
NUMANUMA 即 Non-Uiform Memory Access(非一致性內存訪問),結合我們之前講述的主板架構,兩顆CPU之間有一個通道,每個CPU與各自的內存通道進行直連,可以通過下圖直觀看出。
numaCPU0 訪問 左邊的內存通道速度很快,CPU1訪問右邊的內存通道也很快,當CPU1要訪問左邊的內存通道必須要藉助CPU0的幫忙,需要先通過QPI總線找到CPU0,再來訪問左邊的內存通道,這就產生了額外的開銷,訪問左邊內存通道的開銷相當於直連訪問右邊通道開銷的3倍。
「所以對於計算密集型任務我們需要儘量避免這種跨CPU的內存訪問,這就是NUMA的問題,非一致性指的是訪問本地和跨CPU訪問的代價差別不一致」
我們可以通過指令 numactl -s 查看numa的信息
可以使用指令 numactl --cpunodebind=0 --membind=0 command 指定進程使用的numa節點和內存
如上就是讓 command 指令只使用cpu0 ,和內存0,這就使得進程指令在運行的時候使用的CPU和內存在同一側,達到計算性能速度最大化的效果。
內存內存大家平時工作中接觸的都比較多,對於內存我們主要通過以下幾個方面來了解:
內存規格主要通過以下三個命令全面了解內存信息
我們可以通過 dmidecode -t memory | more 指令查看內存信息,效果如下:內存信息可以使用 dmidecode -t memory | grep Size 指令查看內存大小並判斷內存是否正常工作查看內存插槽將內存插入主板時一般需要對稱插入,通過上圖我們可以看到下面有根內存不工作。
內存容量系統剩餘內存 available 是我們最關心的一個值,不要被free列唬住了。
磁碟對於磁碟我們主要通過吞吐率和IOPS兩個指標來對其衡量
「吞吐率/吞吐量」:單位時間內讀寫的數據量
普通固態硬碟:200MB/s - 500MB/s;PCIE固態硬碟(直連CPU):900MB/s - 3GB/s「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)
在該模式下,作業系統和交換機都會創建一個聚合組,在同一聚合組下的網口共享同樣的速率和雙工設定。
本文給大家介紹了伺服器硬體的基礎知識,只有對硬體有了全面的認識和了解我們才能在硬體選型時做到心中有溝壑,可以針對各個組件的特點選取合適的硬體來支撐其運行。
覺得不錯,請點個在看呀