轉自: http://www.cnblogs.com/wjoyxt/p/4804293.html
lscpu
Thread(s) per core: 2Core(s) per socket: 6Socket(s): 2
在判斷當前是否開啟了超線程之前,需要先判斷另外幾個數據:1,物理CPU個數:
1
2
3
[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq
physical id : 0
physical id : 1
可以看到物理CPU個數為2,物理CPU也就是機器外面就能看到的一個個CPU,每個物理CPU還帶有單獨的風扇。2,每個物理CPU的邏輯核數:
1
2
[root@localhost ~]# cat /proc/cpuinfo | grep "cores" | uniq
cpu cores : 6
3,系統整個cpu線程數:
1
2
[root@localhost ~]# cat /proc/cpuinfo | grep "processor" | wc -l
24
有了三面幾個數據,就可以判斷當前是否開啟了超線程了,沒開啟超線程的情況下,系統的cpu線程數=物理CPU個數每個物理CPU的邏輯核數1,因為每個邏輯核只跑了1個cpu線程,如果開啟了超線程,那么cpu線程數=物理CPU個數每個物理CPU的邏輯核數N,因為每個邏輯核跑了2個cpu線程。所以,上面的24=262,可以判斷當前開啟了超線程。
1
2
3
[root@localhost ~]# cat /proc/cpuinfo | grep "model name" | uniq
model name : Intel(R) Xeon(R) CPU X5670 @ 2.93GHz
[root@localhost ~]#
這是一臺X5670機器,從Intel的cpuX5670規格頁面(http://ark.intel.com/products/47920/Intel-Xeon-Processor-X5670-%2812M-Cache-2_93-GHz-6_40-GTs-Intel-QPI%29)可以看到,其的確支持Intel? Hyper-Threading Technology。再看另外一個:
1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# cat /proc/cpuinfo | grep "physical id" | sort | uniq
physical id : 0
physical id : 1
[root@localhost ~]# cat /proc/cpuinfo | grep "cores" | uniq
cpu cores : 4
[root@localhost ~]# cat /proc/cpuinfo | grep "processor" | wc -l
8
[root@localhost ~]# cat /proc/cpuinfo | grep "model name" | uniq
model name : Intel(R) Xeon(R) CPU E5504 @ 2.00GHz
[root@localhost ~]#
8=2*4,沒有開啟超線程,從Intel的cpuE5504規格頁面(http://ark.intel.com/products/40711/Intel-Xeon-Processor-E5504-%284M-Cache-2_00-GHz-4_80-GTs-Intel-QPI%29)可以看到,其不支持Intel? Hyper-Threading Technology,想開啟都沒法。另外,根據physical id信息可以判斷哪些邏輯核在同一個物理核上,因為同一物理核上的邏輯核的physical id相等;而根據core id信息又可以判斷哪兩個cpu線程跑在同一個邏輯核上,因為跑在同一邏輯核上的cpu線程的core id相等,但是,由于不同物理核上的邏輯核core id可以相等,所以在進行第二個判斷(即哪兩個cpu線程跑在同一個邏輯核上)前需要先進行第一個判斷(即哪些邏輯核在同一個物理核上)。