超線程技術(shù)能夠在很大程度上幫助系統(tǒng)管理員提升處理器性能表現(xiàn),但是管理員還是應(yīng)該注意使用這種技術(shù)的最終結(jié)果可能難以預(yù)測。
問題:使用超線程技術(shù)可能對系統(tǒng)造成哪些負(fù)面影響?
新手系統(tǒng)管理員最常犯的錯誤之一就是認(rèn)為使用超線程技術(shù)與添加一個全新內(nèi)核是一樣的——但實際情況并非如此。超線程技術(shù)并不會為處理器內(nèi)核增加任何額外計算資源,只是允許不同任務(wù)共享內(nèi)核的現(xiàn)有計算資源而已。如果處理器使用率相對較低,擁有充足的空閑時間,那么這種方式能夠大幅度提升系統(tǒng)的性能表現(xiàn)。新增加的線程通過運行額外任務(wù)能夠有效利用內(nèi)核空閑時間,這樣處理器——以及整個系統(tǒng)——就能夠在同樣的時間段內(nèi)完成更多的任務(wù)。
但是超線程技術(shù)并非總是能夠起到幫助作用。比如,超線程技術(shù)的成功需要依賴于合適的調(diào)度系統(tǒng),只有Windows Server 2016這樣的全新一代操作系統(tǒng)才具有這種特性。即便底層硬件處理器能夠支持超線程,并且在系統(tǒng)BIOS中已經(jīng)啟用這種特性,但是像Windows Server 2013這樣的操作系統(tǒng)并不能識別超線程。此外,超線程技術(shù)能夠帶來的性能提升會隨著內(nèi)核數(shù)量的增加而逐漸降低。比如,借助于超線程技術(shù),單核系統(tǒng)最多能夠?qū)崿F(xiàn)30%的性能提升,而雙核系統(tǒng)通常最多只能實現(xiàn)15%的性能提升。而四核——或者更多核心——的處理器需要在啟用和關(guān)閉超線程的情況下分別進行測試,才能夠最終確定性能表現(xiàn)。但是既然已經(jīng)擁有了多個物理內(nèi)核,那么同時使用多個內(nèi)核比使用超線程技術(shù)要更加高效。
在hypervisor中啟用CPU affinity特性也需要十分小心。如果啟用超線程技術(shù),hypervisor能夠在系統(tǒng)的物理和邏輯核心之間提供良好的線程調(diào)度和自動負(fù)載均衡功能。啟用CPU affinity特性將會對hypervisor的調(diào)度和負(fù)載均衡能力造成影響,導(dǎo)致系統(tǒng)不能提供最好的性能表現(xiàn)。CPU affinity特性還會對CPU針對特定虛擬機進行資源預(yù)留的能力造成影響。即便CPU affinity特性在當(dāng)前服務(wù)器上能夠發(fā)揮其作用,如果將虛擬機遷移到不同處理器數(shù)量的其他服務(wù)器上,也會對CPU affinity特性造成嚴(yán)重影響,因此最好讓hypervisor或者操作系統(tǒng)自動進行配置。
最后,不要忽略負(fù)載自身的特性。使用多個邏輯處理器并不會對單線程負(fù)載帶來任何幫助作用,因此超線程技術(shù)無法提升這些負(fù)載的性能表現(xiàn)。此外,需要占用大量計算資源以及需要和內(nèi)存進行大量數(shù)據(jù)傳輸——也就是占用大量內(nèi)存I/O——的負(fù)載也無法受益于超線程技術(shù)。因此需要在了解常駐內(nèi)存負(fù)載的特性之后再決定是否使用超線程技術(shù),或者將負(fù)載遷移到其他啟用(未啟用)超線程技術(shù)的系統(tǒng)上。
超線程技術(shù)允許不同任務(wù)共享處理器內(nèi)核的空閑計算資源。使用這種方式,管理員無需購買或者添加/升級處理器,使用現(xiàn)有處理器就能夠完成更多的任務(wù)。但是這種技術(shù)并非適用于任何硬件或者負(fù)載。在評估全新負(fù)載的性能和遷移特性過程中,考慮超線程技術(shù)所帶來的影響,并且在必要的時候禁用超線程技術(shù)。