01
問題
最近在搞Linux下性能評測,在做CPU評測時發現了個有意思的現象,因為uos系統是自帶系統監視器的,在對輸入法進程檢測時,發現其CPU占用率為1%:
但是我用top命令查詢時卻發現它的CPU占用率為4%!
這是什麼鬼?是輸入法的bug?還是系統的bug?
02
問題查詢
查詢了資料才發現Linux下的CPU是區分物理CPU和邏輯CPU的,呼,好險,如果提了bug,估計開發就該瘋了。。。
那麼什麼是物理CPU?什麼是邏輯CPU?他們之間又有什麼區别那?
03
物理CPU
實際機器中插槽上的CPU個數;物理cpu數量,可以通過命令數不重複的physical id有幾個來查詢。
查詢命令:cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc –l
這說明我的uos系統物理CPU隻有1個。
04
CPU核數
一塊物理CPU上能處理數據的芯片組數量。也就是說一個物理CPU上可能會有多個核心,日常中說的雙核,四核就是指的CPU核心。可通過如下命令來查看CPU核心數:
cat /proc/cpuinfo | grep "cores" | uniq
05
邏輯CPU
邏輯CPU數量=物理cpu數量 x cpu cores x 2(如果支持并開啟ht)。
一般情況,我們認為一顆cpu可以有多核,加上intel的超線程技術(HT),可以在邏輯上再分一倍數量的cpu core出來;所以邏輯CPU的值理論上是可以超過100%的。
Ps:Linux下top查看的CPU也是邏輯CPU個數
查詢命令:cat /proc/cpuinfo | grep "processor" | wc –l
根據換算公式:
邏輯CPU個數(4個)=物理cpu數量(1個) x cpu cores(4) x 1(不支持ht超線程技術)
這說明我的邏輯CPU個數是4個;怪不得我用top命令得出的結果是系統監視器的4倍!!!
最後,再簡單說下超線程吧。
06
超線程
一個CPU核就是一個物理線程,由英特爾開發超線程技術可以把一個物理線程模拟出兩個線程來使用,使得單個核心用起來像兩個核一樣,以充分發揮CPU的性能。
Ps:一般來說,物理CPU個數×每顆核數就應該等于邏輯CPU的個數,如果不相等的話,則表示服務器的CPU支持超線程技術。
07
說在最後
在Linux下進行測試時要摒棄很多Windows的固有思維,如進程概念,Windows下關閉輸入法相關進程後台會自動退出,但是Linux下後台進程是随着系統啟動,除非強殺否則不會退出;同樣,Linux下的CPU和内存機制與Windows也有着很大不同,尤其是内存的管理機制,感興趣同學可以自行查詢相關概念,相信一定會收益頗豐。
a,發現其CPU占用率為1%:
編輯 搜圖
但是我用top命令查詢時卻發現它的CPU占用率為4%!
這是什麼鬼?是輸入法的bug?還是系統的bug?
02
問題查詢
查詢了資料才發現Linux下的CPU是區分物理CPU和邏輯CPU的,呼,好險,如果提了bug,估計開發就該瘋了。。。
那麼什麼是物理CPU?什麼是邏輯CPU?他們之間又有什麼區别那?
03
物理CPU
實際機器中插槽上的CPU個數;物理cpu數量,可以通過命令數不重複的physical id有幾個來查詢。
查詢命令:cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc –l
這說明我的uos系統物理CPU隻有1個。
04
CPU核數
一塊物理CPU上能處理數據的芯片組數量。也就是說一個物理CPU上可能會有多個核心,日常中說的雙核,四核就是指的CPU核心。可通過如下命令來查看CPU核心數:
cat /proc/cpuinfo | grep "cores" | uniq
05
邏輯CPU
邏輯CPU數量=物理cpu數量 x cpu cores x 2(如果支持并開啟ht)。
一般情況,我們認為一顆cpu可以有多核,加上intel的超線程技術(HT),可以在邏輯上再分一倍數量的cpu core出來;所以邏輯CPU的值理論上是可以超過100%的。
Ps:Linux下top查看的CPU也是邏輯CPU個數
查詢命令:cat /proc/cpuinfo | grep "processor" | wc –l
根據換算公式:
邏輯CPU個數(4個)=物理cpu數量(1個) x cpu cores(4) x 1(不支持ht超線程技術)
這說明我的邏輯CPU個數是4個;怪不得我用top命令得出的結果是系統監視器的4倍!!!
最後,再簡單說下超線程吧。
06
超線程
一個CPU核就是一個物理線程,由英特爾開發超線程技術可以把一個物理線程模拟出兩個線程來使用,使得單個核心用起來像兩個核一樣,以充分發揮CPU的性能。
Ps:一般來說,物理CPU個數×每顆核數就應該等于邏輯CPU的個數,如果不相等的話,則表示服務器的CPU支持超線程技術。
07
說在最後
在Linux下進行測試時要摒棄很多Windows的固有思維,如進程概念,Windows下關閉輸入法相關進程後台會自動退出,但是Linux下後台進程是随着系統啟動,除非強殺否則不會退出;同樣,Linux下的CPU和内存機制與Windows也有着很大不同,尤其是内存的管理機制,感興趣同學可以自行查詢相關概念,相信一定會收益頗豐。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!