2012年10月30日 星期二

「HT (Hyper-Threading) 要不要啟用 (Enable)?」的討論

最近新買一台電腦,在安裝作業系統時,一個老問題又開始困擾我。
HT (Hyper-Threading) 要啟用?還是開閉?
每次換新電腦,就要傷腦筋一次。但是為了讓買電腦的錢,能夠充分發揮它的作用,再做一次整理,顯然是必要。
    當然,筆者的資本、時間有限,無法自已做實驗,只好借助 Google 強大的搜尋能力,找一找各方高手的報告,再做個整理。根據比較完整的幾篇報告(參考篇末的網路連結),整理得到的結論如下:

一、依 CPU 來區分

以 CPU 的發表時間來區分,可概分為:早期的 HT 版本,現在的 HT 版本。

早期的 HT 版本

在 Pentium 4 時發表的 Hyper-Threading 版本,是屬於早期版本。在當時只是新發展的技術,增加的效能有限,約只有 15 ~ 30%。再加上作業系統(包含 Windows 和 Linux)、應用程式的支援度不足,有些測試報告效能反而略有降低。
    有些測試報告指出,在啟用 HT 後功耗會略有增加。功耗的增加,也導致散熱的問題。因此這些測試報告會建議使用者,最好在 BIOS 裏,把 HT 的功能關閉(有些 BIOS 是預設關閉 HT)。

現在的 HT 版本

Core i 以後的版本,HT 的支術有再改進,功耗問題也有解決。在加上作業系統和應用的支援,啟用 HT 的確有增加整個系統的效能表現。

二、依作業系統來區分

Hyper-Threading 技術,只是將一個 CPU 模擬成雙核 CPU(即:「實體核心」和「模擬核心」),兩個核心的效能並不相等,在「多執行緒」(Multi-thread)的程式執行時,若作業系統不能分辨兩個核心的不同。例:將「運算為主的執行緒」指定由較慢的核心(模擬核心)執行,而反將「輸出入為主的執行緒」指定給較快的核心(實體核心),這種不良的執行緒指定會降低系統的效能。
    所以,除了應用程式要支援「多執行緒」外,作業系統也要能分辨兩種核心的不同,將「運算為主」的執行緒指定由「實體核心」執行。

Windows 2003 及 Linux 2.4 之前

Windows 2000,Windows 2003 和 Windows XP 都有測試報告:啟用 HT 未必能增加效能,有時反而會降低。而這些時期的應用程式,也未對多執行緒進行最佳化。因此,這時期的測試報告,多數建議關閉 HT,以提昇效能。

Windows Vista 及 Linux 2.6 之後

作業系統逐漸增加對 HT 的支援,對於「實體核心」和「模擬核心」的執行緒指定,也比較有效率。應用程式也多對執行緒進行最佳化。因此,在這時期的電腦系統中,將 HT 啟用可以增加整個系統效能。

三、結論

綜合以上資料可以得到一個結論,以較保守的估計將之列表如下:
作 業 系 統CPU
Pentium 4Core i 後AMD Bulldozer 後
Linux 2.4 前關閉 HT關閉 HT關閉 HT
Linux 2.6 後關閉 HT啟用 HT啟用 HT
Windows 2003 前關閉 HT關閉 HT關閉 HT
Windows Vista 後關閉 HT啟用 HT啟用 HT
:Linux 系統可在「終端機」中,用『uname -r』這個命令查詢版本。

參考資料:

沒有留言:

張貼留言

感謝你耐心看完本文,歡迎留下任何指正、建議,筆者會儘快回應。(English is also welcome.)