一、概念
物理CPU
實際Server中插槽上的CPU個數
物理cpu數量,可以數不重複的 physical id 有幾個
邏輯CPU
Linux用戶對 /proc/cpuinfo 這個文件肯定不陌生. 它是用來存儲cpu硬件信息的
信息內容分別列出了processor 0 – n 的規格。這裏需要注意,如果你認爲n就是真實的cpu數的話, 就大錯特錯了
一般情況,我們認爲一顆cpu可以有多核,加上intel的超線程技術(HT), 可以在邏輯上再分一倍數量的cpu core出來
邏輯CPU數量=物理cpu數量 x cpu cores 這個規格值 x 2(如果支持並開啓ht)
備註一下:Linux下top查看的CPU也是邏輯CPU個數
CPU核數
一塊CPU上面能處理數據的芯片組的數量、比如現在的i5 760,是雙核心四線程的CPU、而 i5 2250 是四核心四線程的CPU
一般來說,物理CPU個數×每顆核數就應該等於邏輯CPU的個數,如果不相等的話,則表示服務器的CPU支持超線程技術
二、查看信息
#查看物理CPU個數
$ cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l
#查看邏輯CPU個數
$ cat /proc/cpuinfo |grep "processor"|wc -l
#查看CPU核心數
$ cat /proc/cpuinfo |grep "cores"|uniq
三、超線程技術
Intel的超線程技術,目的是爲了更充分地利用一個單核CPU的資源。CPU在執行一條機器指令時,並不會完全地利用所有的CPU資源,而且實際上,是有大量資源被閒置着的。超線程技術允許兩個線程同時不衝突地使用CPU中的資源。比如一條整數運算指令只會用到整數運算單元,此時浮點運算單元就空閒了,若使用了超線程技術,且另一個線程剛好此時要執行一個浮點運算指令,CPU就允許屬於兩個不同線程的整數運算指令和浮點運算指令同時執行,這是真的並行。