標籤:blog http io ar os 使用 sp strong on
使用sys.dm_sys_info 這個視圖的時候經常對hyperthread_ratio這個列感覺迷惑。這個列的含義到底是什嗎?
翻譯的外國大神的一篇文章, http://sqlblog.com/blogs/kalen_delaney/archive/2007/12/08/hyperthreaded-or-not.aspx
在我的課堂上或者每次我做效能顧問的時候,我經常會遇到一個問題“我怎麼確定我們的SQL SERVER是否是超執行緒的”?
當我發現DMV--sys.dm_sys_info有一個列叫做hyperthread_ratio(超執行緒比)的時候,我感覺很高興極了。不久後,我讀到我最愛的一個SQL SERVER
博主Buck Woody 的一篇博文。他指出下面的查詢告訴了我們CPU核心的數量,而並不是告訴你是否開啟了超執行緒。
SELECT cpu_count/hyperthread_ratio AS sockets
FROM sys.dm_os_sys_info
雖然Buck 說這條語句告訴了我們核的數量,但這並不正確。因為一個插槽可以包含一個多核的CPU。一個擁有單插槽雙核CPU 並且未做超執行緒的cpu_count 是2,hyperthread_ratio 是2 ;同時單插槽單核心並且超執行緒的電腦 hyperthread_ratio 同樣也是2。在2種情況下,cpu_count/hyperthread_ratio 都是1--插槽的數量。如果我們有一台一個插槽,雙核CPU,並且超執行緒的電腦,CPU_COUNT會變成4.hyperthread_ratio 同樣是4,使用這個比率同樣是1,總結如下:
Number of Sockets |
Number of Cores |
Hyperthreaded? |
sys.dm_os_info. cpu_count |
sys.dm_os_info. hyperthread_ratio |
cpu_count / hyperthread_ratio |
1 |
2 |
NO |
2 |
2 |
1 |
1 |
1 |
YES |
2 |
2 |
1 |
1 |
2 |
YES |
4 |
4 |
1 |
所以即使Buck說這個公式能夠告訴我們核心的數量,但是這個查詢本身告訴我們,結果是“插槽數”。cpu_count/hyperthread_ratio會得到插槽數,而不是核心數。並且沒有辦法區分雙核和超執行緒.
sql server是否超執行緒?