架構師之路 - 伺服器硬體掃盲

2021-02-14 OSC開源社區

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

伺服器

根據伺服器的外形和使用場景我們將伺服器分為以下四種:

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

伺服器的機箱只是外殼,核心架構還是主板。

主板架構

這個圖是Intel典型的主板晶片組架構:伺服器的主板有個統一的中央晶片組(Intel C600),晶片組可以連接多個CPU(E5-2400/2600),CPU之間通過QPI快速通道進行連接,CPU與內存插槽,PCIE插槽之間連接,晶片組還與低速的外設進行連接(USB、網卡、SATA等)。

伺服器選型考慮因素

做服務選型主要基於以下幾個方面:

限制條件:作業系統OS、客戶喜好及預算、應用系統的程式語言部署規模:如果規模較大,需要考慮空間佔用問題,可考慮刀片或高密度伺服器OS:UNIX > Linux > Windows計算特點的考慮:是要將一個大的計算能力進行分割,靈活分配,還是有一個很大的課題要用多臺機器聯合計算IO特點的考慮:吞吐率與IOPS多大?虛擬機能否承受?伺服器廠商國內的伺服器廠商主要有:曙光、華為、浪潮、H3C、聯想、長城等CPU

CPU作為伺服器的核心固件,我們主要通過以下幾個概念來了解:

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系列

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還有很長的路要走。

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內存頻率
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 指令查看內存大小並判斷內存是否正常工作查看內存插槽

將內存插入主板時一般需要對稱插入,通過上圖我們可以看到下面有根內存不工作。

內存容量

系統剩餘內存 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)
在該模式下,作業系統和交換機都會創建一個聚合組,在同一聚合組下的網口共享同樣的速率和雙工設定。

小結

本文給大家介紹了伺服器硬體的基礎知識,只有對硬體有了全面的認識和了解我們才能在硬體選型時做到心中有溝壑,可以針對各個組件的特點選取合適的硬體來支撐其運行。

覺得不錯,請點個在看呀

相關焦點

  • 架構師之路 - 存儲架構
    架構師在做架構設計時一定繞不開存儲的設計,本文我們一起來了解一下存儲的相關知識。主要內容包括存儲使用方式、常見協議、連結方式以及分布式存儲架構中的典型架構案例。存儲分類存儲架構從架構角度分類存儲一般可以分為:集中式存儲和分布式存儲。
  • 從軟體搬磚師到軟體架構師,程式設計師的架構師之路
    在我看來搬磚師和工程師的區別有很大不同。只要看他寫的代碼有沒有注意可維護性,會和同伴交流的時候刻意去追求讓同伴更好地理解自己的思想,是不是對單元測試比較抗拒,是不是比較樂意去做代碼評審並且非常認同這件事情的價值,基本上通過這些事情就可以評判這個人是搬磚師還是工程師。談到軟體架構師,由於我畢業後兩年在從事架構性質的工作,因此對軟體架構師的特性有一些總結。
  • C、C++、Go 語言、Linux伺服器開發高級架構師進階之路
    但是也有很多地方是其他語言完全無法替代的,主要集中在需要運行效率比較高的行業,比如遊戲、高效的伺服器。現在介紹一下成為一名C++高級工程師到底需要學習那些內容呢?1、源碼分析專欄常用的數據結構常用的設計模式NginxZeroMQ
  • 架構師之路-微服務技術選型
    作為一名架構師,需要規劃產品技術路線,負責技術選型。而技術棧選型主要參考以下幾個標準:本篇為大家帶來微服務架構的後端技術選型,當你需要進行技術選型時,可以參照他來設計自己的決策樹。通過Kubernetes,你可以快速有效地響應用戶需求;快速而有預期地部署你的應用;極速地擴展你的應用;無縫對接新應用功能;節省資源,優化硬體資源的使用。為容器編排管理提供了完整的開源方案。生態豐富,易擴展;功能豐富穩定,大公司背書;易上手。
  • 架構師的必備素質和成長途徑
    作為業界最前沿技術的實踐者和布道者,致力於推動移動網際網路技術引領行業變革,譯著《架構即未來》已於2016年5月上市。 責編:錢曙光,關注架構和算法領域,尋求報導或者投稿請發郵件qianshg@csdn.net。它山之石可以攻玉,儘管每個架構師都有自己的成長路徑,但是了解其他架構師的成長之路,對未來想成為架構師的人有一定的借鑑價值。
  • 總架構師眼裡的架構和架構師的成長之道
    目前,他帶領一支架構師團隊全面負責設計和實施FreeWheel的核心系統,包括廣告伺服器以及報告、預測、收入和費用計算等數據處理模塊。他還管理並指導基礎架構團隊,以支持並增強公司的服務能力,同時與運營部門密切合作,不斷優化產品和服務質量。
  • 沒有架構師的命,卻得了架構師的病!
    而架構師也可以分為初級、中級、高級三檔,江湖上真正高水平的軟體架構師就更少了。所以,大部分(超過九成的)碼農幹上許多年,還是做不了架構師,這是什麼原因造成的呢?寫代碼和做架構是兩個不同的事情。什麼是架構師,架構師要做什麼事情,為什麼 Java 的領域裡,會更注重架構師?
  • 「立體化監控告警平臺」-架構師之路年終總結
    《一分鐘搞定「http接口」監控框架》常見http監控玩法常見http監控的弊端通用可擴展http監控平臺架構簡版http監控框架架構100行偽代碼搞定http監控畫外音:如果沒有http接口監控,這一篇能夠快速搞一個簡版。
  • 架構師成長之路之限流漫談
    我們為什麼需要限流在上一篇架構師成長之路之服務治理漫談裡面,我們已經談到了高可用治理的部分。為了「反脆弱」,在微服務複雜拓撲的情況下,限流是保障服務彈性和拓撲健壯的重中之重。想一想,如果業務推出了一個秒殺活動,而你沒有任何的限流措施;當你搭建了一個帳號平臺,而完全沒有對十幾個業務方設定流量配額……這些很有可能在特定場合下給你的產品帶來大量的業務損失和口碑影響。
  • 伺服器硬體架構、產品和管理指南
    點擊上方「藍色字體」,選擇 「設為星標」關鍵訊息,D1時間送達!
  • 架構師成長之路之限流
    在上一篇《架構師成長之路之服務治理漫談》裡面,我們已經談到了高可用治理的部分。
  • 架構師,是否需要寫代碼
    概要:1、架構師是神馬獅,代碼是什麼馬2、架構師的成長之路3、架構師是使用代碼作畫的大獅4、本期「小獅子」獎架構師是什麼獅,代碼是什麼馬記得那天是這樣的,總導演(右導)一拋出話題,群內雄獅們可炸開了鍋:獅子郭:架構師應該寫代碼,架構師需驗證自己架構上想法的可行性
  • 架構師,是否需要寫代碼?
    概要:1、架構師是神馬獅,代碼是什麼馬2、架構師的成長之路3、架構師是使用代碼作畫的大獅,架構師需驗證自己架構上想法的可行性…獅子肖:架構師必須得做到了解現狀,方案與實際相符,別和猿類離得太遠...2   架構師成長之路
  • 如何成為一名優秀的架構師?
    程式設計師和架構師都對這樣的架構評審望而生畏。軟體架構師的角色應當像園丁而非指揮官。前者的職責主要是塑造、策劃並清除雜草,而後者主要任務是發號施令。在 WSO2,我參與架構評審的時間已長達八年之久。WSO2 的產品非常豐富,比如 WSO2 ESB 、WSO2 API Manager  以及 WSO2 SP  都人盡皆知。
  • 阿里P8架構師深度概述分布式架構
    簡介作為一名架構師,我們要專業,要能看懂代碼,及時光著臂膀去機房,也能獨擋一面!
  • 「無伺服器架構」無伺服器架構是應用程式的正確選擇?考慮利弊
    為了平衡我們上一篇文章中略顯誇張的pro-serverless的立場,讓我們從這次無伺服器web開發的缺點開始:Serverless缺點那麼,採用無伺服器開發方法可能存在哪些問題和缺點呢?廠商鎖定在與我們自己的架構師和客戶討論serverless是否是一個新的開發項目的正確方式時,我們經常會看到對供應商鎖定的擔憂。
  • 靈魂小問——啥是IDC架構師?
    近些年IDC行業title也接軌了網際網路,IT的光,職稱title有了架構師這個詞,那到底什麼是數據中心IDC的架構師標準?看看知乎裡面,軟體行業裡面對架構師的普遍性理解。「系統架構師是一個既需要掌控整體又需要洞悉局部瓶頸並依據具體的業務場景給出解決方案的團隊領導型人物。
  • 系統架構師是怎樣煉成的
    成為架構設計師是廣大開發者職業發展道路之一,架構師究竟是個什麼樣的職業?需要具備什麼基本能力?如何才能成為一個優秀的架構設計師以及架構設計師需要關注哪些內容?把幾臺伺服器一擺,每一臺伺服器運行什麼軟體分配好,然後用網絡連接起來,似乎每個企業級應用都是如此簡間單單的幾步。但現實生活中的軟體系統實實在在可以用複雜大系統來形容,從規劃、開發、維護和變更涉及到許許多多的人和事。架構設計就是要在規劃階段都把後面的事情儘量把握進來,要為穩定性努力,還要為可維護性、擴擴展性以及諸多的性能指標而思前想後。
  • 架構與架構師2
    對於這兩個問題,之前也總結過一篇《架構和架構師》[1],再結合他的專欄文章和視頻,補充一下架構李運華給架構的定義:軟體架構指軟體系統的頂層結構,縮句成架構指結構,而結構的修飾語蘊含了太多東西,抽象不夠直白這個定義裡面蘊含了作者介紹的系統和子系統、模塊與組件、框架與架構三組常見的概念
  • 網管,網工,Or 網絡架構師?你覺得自己是哪一個?
    基本技能也潛移默化地發生改變, 精通 BGP,要懂,深諳硬體行業趨勢,需要懂一些系統知識甚至會要求有能力寫些代碼。大家看到5年發生了一個巨變,這個巨變是什麼帶來的呢?是伺服器的增長帶來的。伺服器在哪兒呢?