AMD第三代EPYC處理器的綜合性能相比前代有了大幅提升,如何透過合規安裝、最佳化設定來儘可能發揮出其最強效能呢?事實上根據官方指導對AMD EPYC處理器平臺伺服器進行硬體安裝、BIOS設定和系統最佳化,就能實現平臺的全面最佳化,充分釋放效能。
硬體安裝
伺服器處理器持續高負荷工作,發熱量通常都非常高,加上內部空間相對狹窄,如果安裝方式不正確,就會造成熱量聚集,影響效能發揮以及穩定性。
AMD第三代EPYC處理器沿用了SP3介面封裝,AMD提供了專用的工具來進行Socket螺絲的拆裝,如果使用電動螺絲刀,那麼建議將扭矩設定為75LBF。安裝伺服器處理器時,要將散熱矽脂均勻地、儘可能薄地塗抹到處理器上。塗抹時確保矽脂無氣泡、無雜質、覆蓋充分,從而保證更高效地將處理器的熱量傳遞到散熱器上。
▲AMD第三代EPYC處理器沿用了SP3介面封裝
一般來說,伺服器上都會有很多記憶體插槽。AMD第三代EPYC處理器可以支援4、6、8三種記憶體通道模式。考慮到如今企業級負載對記憶體頻寬和容量的需求,單顆EPYC處理器通常至少會搭配4根記憶體。一般而言,記憶體的安裝從距離處理器最遠端的插槽開始,記憶體的具體安裝法則需遵從伺服器使用手冊。
BIOS調整
完成硬體安裝和裝置連線後,管理員需要首先登入到BMC管理介面對BIOS進行升級,確保已經升級至最新的穩定版BIOS。之後在最新的BIOS下,對相關引數進行調整,以充分發揮AMD EPYC處理器的效能。
當然,不同主機板廠商的BIOS可供使用者設定的選項與路徑是不同的,下面我們將以AMD公版BIOS進行介紹。其對平臺的相關調整,均被整合到了“Advanced”頁面的“AMD CBS”(Common BIOS Setting)專案下,可以調整AMD的內部功能設定。“AMD CBS”包括了“CPU Common Options”“DF Common Options”“UMC Common Options”“NBIO Common Options”“FCH Common Options”“NTB Common Options”“Soc Miscellaneous Control”等專案。
▲CBS = Common BIOS Setting,用於調整AMD的內部功能設定
▲CBS專案下,包含了多個AMD EPYC平臺的內部功能設定專案
首先是在“CPU Common Options”頁面設定CPU的相關情況,“Performance”專案可以對處理器的CCD、Core核心數量、SMT進行設定。不同代次、不同型號的處理器其具體選項不同,比如第三代EPYC處理器最高支援8個CCD,每個CCD最大可支援8個核心。“CCD Control”可以調整實際使用的CCD數量,“Core Control”可以調整每個CCD中實際使用的核心數量。這裡我們建議均採用【Auto】設定,將具體資訊交由SMU直接控制,根據處理器實際情況而定。多執行緒的設定則透過“SMT Control”來實現,預設開啟。
▲在Performance(效能)專案設定下,可設定處理器的CCD晶片數量、核心數量,開啟或關閉處理器的多執行緒功能。
“CPU Common Options”頁面中的“Core Performance Boost”是EPYC處理器的超頻(Boost)選項,關閉狀態下處理器只能工作在基礎頻率下。為了獲得更好的效能,我們建議設定為【Auto】,預設開啟超頻。“Global C-state Control”是節能選項,開啟後會自動根據負載調整處理器的功耗。一般情形下建議使用【Auto】,即開啟。在對於部分延遲非常敏感的應用場景,可以考慮關閉這個選項。
“DF Common Options”頁面中主要是對記憶體訪問進行一些設定,來提高資料讀寫方面的效能。比如我們透過NUMA NPS(Nodes Per Socket)來更改NUMA節點配置,其中NPS0將兩顆CPU作為一個節點,NPS1將一顆CPU作為一個節點,NPS2將一顆CPU左右兩部分各作為一個節點,NPS4將一顆CPU的每個象限作為一個節點,選擇【Auto】則預設採用NPS1。常規來說,我們需要根據CCD數量的不同來進行NPS設定,4個或8個CCD可以使用NPS4/2/1/0,6個CCD可以使用NPS2/1/0,2個CCD只能使用NPS1/0。“Memory interleaving”用於設定記憶體訪問交錯模式,採用【Auto】模式預設啟用,該選項配合NPS來使用。當使用NPS1時,開啟該選項預設可使用8通道記憶體交錯訪問;如果不滿足8通道記憶體,會降到4通道或2通道記憶體交錯訪問。當使用NPS2時,預設為4通道交錯訪問;使用NPS4時,預設為2通道交錯訪問。“Memory interleaving size”則是設定記憶體交錯大小,其中預設【Auto】為256bytes。
▲在DDR4 Common Options下,可調節記憶體的時序,開啟或關閉記憶體低功耗模式,以及對地址、控制與資料匯流排進行配置。
“UMC Common Options”主要用於記憶體控制器的相關設定,多數都是與debug有關。“DDR4 Common Options”用於記憶體硬體引數調整及RAS特性設定,比如DRAM時序設定,地址、控制與資料匯流排配置,RAS特性、TSME記憶體加密開關,以及記憶體控制器選項,包括“DRAM Power Options”對於“Power Down Enable”的節能設定,關閉有助於改善記憶體延遲,但是會增加功耗,一般會選擇【Auto】預設開啟或者【Enable】啟用。另外,這裡還可以設定“Memory MBIST”記憶體自檢,常規選擇【Disable】預設關閉。
在“NBIO Common Options”頁面,主要用於設定晶片組IO相關的選項。“IOMMU”(I/O Memory Management Unit)專案,用於設定外設在DMA傳輸時地址轉換和系統記憶體訪問保護,包括【Enable】、【Disable】、【Auto】三個選項,開啟IOMMU可以提高與外部儲存的資料交換速度,降低系統性能消耗。一般情況下,我們建議IOMMU設定為【Enabled】,同時把iommu=pt新增到grub裡。當伺服器執行虛擬化軟體時,可以實現虛擬記憶體對物理記憶體的地址對映,帶來資料效能的提升。如果關閉IOMMU,則會令x2APIC關閉,最終導致CPU 255不能識別。
▲IOMMU專案用於設定外設在DMA傳輸時地址轉換和系統記憶體的訪問保護。
“SMU Common Options”專案,主要用於處理器相關的系統性能管理設定。其中,“Determinism Control”用於選擇是否啟用手動設定。如果啟用手動,那麼就可以透過“Determinism Slider”來選擇是追求穩定效能,還是追求極致效能。“Determinism Slider”提供了【Auto】、【Power】、【Performance】三種模式。一般來說,為了實現業務的穩定,確保系統性能的一致性,採用預設的【Performance】模式是最好的選擇。如果想要衝擊一下Benchmark的最高效能,那麼可以選擇【Power】模式,能挖掘每顆晶片的最大效能,當然功耗也會相應上升。
“SMU Common Options”專案下還有“cTDP Control”,也就是CPU的TDP功耗設定。AMD EPYC處理器支援手動設定TDP功耗限制,也就是使用者可以根據系統的散熱能力來設定對應的TDP功耗,不過這個值不能高於TDP max。cTDP設定越高,也就意味著處理器能夠以更高的功率執行,提供更強勁的效能。使用者需要根據AMD EPYC處理器規格表來確定其最大cTDP,比如225W的OPN最高支援到240W的cTDP。如果選擇【Auto】,則使用預設TDP。使用者還可以使用Package Power Limit Control設定功耗上限但不能超過cTDP的值,這個選項可以被管理軟體動態修改。
“Efficiency Mode Enable”效率模式允許使用者在效能和功耗中間進行選擇,其中選擇【Auto】預設使用效能最佳化CCLK DPM設定;選擇【Enable】使用電源效率最佳化CCLK DPM設定,使用該模式可以提升每瓦效能,C0佔比80%以上。如果想要獲得更強的伺服器效能,那麼我們就需要選擇預設的效能最佳化模式。
“APBDIS”當中,包括了Data Fabric Algorithm Performance Boost DF超頻選項,可以選擇【0】開啟,結合負載動態調整頻率,降低功耗;選擇【1】關閉,採用固定頻率,結合Fixed SoC Pstate設定為P0可以減小Memory/IO延遲,但會增加功耗。“Boost Fmax Enable”用於設定最高超頻值,適用於所有核心。其提供了【Manual】手動選項,允許使用者設定一個不高於預設Fmax的最高超頻值或者採用【Auto】直接使用預設的Fmax。Fmax(Max Boost Freq)就是最高超頻,是指單核超頻時使用最大值。一般情況下每個Die上可以有最多兩個物理核心同時達到Fmax,此時其他核心將處於CC6電源關閉狀態。
“Preferred IO”(PIO)是AMD提供的一種提升I/O效能的方法,這裡提供了【Manual】、【Auto】兩種選項,其中【Auto】預設不開啟。PIO機制是關閉Root Complex DPM,並將LCLK從300MHz提升到593MHz。使用者可以在系統中透過使用AMD I/O Power Management Utility關閉Root Complex DPM功能,然後啟用PIO並透過“Preferred IO Bus”選定準備優先處理的匯流排。第二代EPYC處理器只支援一條匯流排設定為PIO,第三代產品則支援多Root Complex使用PIO。
I/O調優
對於伺服器來說,資料I/O能力也會明顯影響實際效能,因此I/O調優也很重要。首先,我們需要安裝libaio-devel開發包,從而啟用非同步I/O功能。非同步I/O功能可以避免同步呼叫的阻塞,實現多個執行緒的同時操作。為了提高虛擬化的效率,我們可以在grub檔案中加入iommu=pt,將IOMMU設定為passthrough模式。當伺服器擁有SR-IOV裝置時,passthrough模式允許不透過記憶體中轉而直接將相應裝置交給終端呼叫。
對於伺服器來說,將不同的硬體中斷平均繫結到不同的核心上,可以實現較好的效能平衡,從而讓多核處理器的效能得到充分的發揮。比如將網絡卡中斷繫結到本地NUMA節點上,將網絡卡佇列數量設定為一個Die內的核數。完成網路最佳化後,可以進行RFC2544效能測試,看看伺服器的吞吐量、延遲、幀丟失率表現。
系統設定
因為AMD EPYC處理器支援超大容量記憶體,為了讓系統更有效地管理大容量記憶體,我們可以在作業系統中啟用透明超大頁面(THP),來降低使用超大頁面的複雜度。不過需要注意的是,在某些特定場景中,啟用THP有可能會出現異常,造成延遲和記憶體使用問題,因此是否啟用還要看具體的應用負載情況。