萬盛學電腦網

 萬盛學電腦網 >> 服務器教程 >> 使用超線程提升處理器性能

使用超線程提升處理器性能

   處理器設計師總是關注於不同的性能提升策略,為的是在每個時鐘周期內完成盡可能多的計算。更快的頻率、更大的數據路徑以及不同的指令集方式都提升了性能。但是,性能提升最可能引起誤解的一個方面就是超線程對處理器性能的影響。

  超線程能夠提升處理器效率已經得到了證實,但是其並不適用於所有場景,而且現代處理器設計可能會令超線程成為明日黃花。

  超線程工作原理

  傳統的處理器隊列指令在傳輸到處理器的執行引擎之前會通過流水線架構。應用設計以及需求差異總是會在處理器的指令管道中留有空隙,導致存在空閒的處理器時鐘周期。糟糕的程序設計可能會浪費時鐘周期並降低處理器性能。

  為了優化處理器架構並提升多任務處理的可能性,處理器設計人員增加了與一級管道共享執行引擎的二級管道。設計人員想讓第二個線程或者任務的相關指令在單個管道中排隊,當第一個指令管道空閒時再通過執行核心運行這些指令。Intel開發了超線程技術,增強了計算機系統上的多線程並行處理。

  在處理器核心中包括第二級指令管道,操作系統會識別到兩個獨立的處理器。能夠將活動分解為單獨任務的應用程序能夠利用處理器超線程技術。單獨的指令序列幫助處理器調度工作負載以有效地使用其指令引擎,這反過來提升了核心的計算能力。

  然而,處理器核心仍舊只有一個執行引擎,因此超線程帶來的性能提升取決於正在被調度的工作負載的設計與實現方式。性能改善從不會超過通過增加第二個核心所帶來的提升,增加第二個核心通常會使處理器的計算資源成倍增加。

  在實現超線程之前需要具備哪些條件

  處理器、BIOS、操作系統以及工作負載構成了超線程服務器應具備的四大基本元素。當代大多數操作系統能夠支持超線程: 2002年Intel在至強處理器中就引入了目前已經很完善的超線程技術,現在Itanium以及Atom處理器也支持超線程。

  然而,處理器需要特定的軟硬件元素,包括服務器主板對BIOS提供支持。超線程的成熟特性幾乎保證了對BIOS的合理支持,通過設置BIOS允許系統技術人員啟用超線程及相關的活動。

  由於OS在指令隊列中解析工作負載任務並處理任務調度,因此操作系統也必須支持超線程。目前,大多數企業級操作系統,包括Windows Server 2012以及SuSE和Red Hat Linux的某些新的發行版都支持HT和SMT.檢查操作系統文檔以確認HT支持所有數據中心平台。

  最後,應用設計本身也影響超線程。設計為能夠借助超線程優勢的SMT應用要比只是部署在啟用超線程服務器的應用性能更好。因為處理器版本、BIOS版本、OS版本以及應用設計都影響超線程,因此很難准確判斷對性能有多大提升。

  超線程如何影響虛擬服務器

  超線程通常提升了單核處理器的性能,但不幸的是,處理器性能提升並不等於更不可能超越多核的性能優勢。你無法基於核心或者插槽來選擇啟用或者禁用超線程,而且在某些情況下,超線程有可能會對處理器虛擬化帶來不良影響。因此,很多管理員選擇禁用超線程。

  超線程技術增強了處理器組織及調度應用任務的方式,提升了性能。然而現代企業服務器至少使用有8到10個核心的多核處理器。在大多數情況下和超線程相比,可用的計算資源能夠帶來更好的性能提升。超線程還可能會對處理器虛擬化的方式帶來不良印象。

  例如,當啟用超線程時虛擬化特性比如CPU關聯性並非總是能夠很好地運行。超線程在每個核心上創建了兩個邏輯處理器,但是這些邏輯處理器仍舊共享物理核心的計算資源。因此,當虛擬機或者單個SMP虛擬機試圖使用位於同一個物理核心上的vCPU時可能會發生資源爭用,出現性能瓶頸。

  實際上,服務器上可用的核心數量可能會導致超線程浪費計算資源。如果一台服務器包括4顆10核處理器,那麼一共有40個核心,運行在Windows Server 2008 R2的Hyper-V服務器支持64個邏輯處理器。如果啟用超線程,服務器將提供80個邏輯處理器,這樣就有16顆邏輯處理器處於空閒狀態,而且幾乎浪費了整個處理器插槽。在這種情況下超線程帶來的性能提升不會超過物理核心所增加的計算能力。

copyright © 萬盛學電腦網 all rights reserved