Linux CPU數量判斷,經過/proc/cpuinfo

其實只要
html

#include <unistd.h>
long num = sysconf(_SC_NPROCESSORS_ONLN);linux

即可以得到當前CPU的數量。。。
api

判斷依據:
1.具備相同core id的cpu是同一個core的超線程。
2.具備相同physical id的cpu是同一顆cpu封裝的線程或者cores。緩存

英文版:
1.Physical id and core id are not necessarily consecutive but they are unique. Any cpu with the same core id are hyperthreads in the same core.
2.Any cpu with the same physical id are threads or cores in the same physical socket.socket

實例:ide

LunarPages的CPU信息:ui

processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Xeon(TM) CPU 3.00GHz
stepping : 3
cpu MHz : 3000.881
cache size : 2048 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pni monitor ds_cpl cid xtpr
bogomips : 6006.73spa

 

processor : 1
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Xeon(TM) CPU 3.00GHz
stepping : 3
cpu MHz : 3000.881
cache size : 2048 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 1
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pni monitor ds_cpl cid xtpr
bogomips : 5999.40操作系統

 

processor : 2
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Xeon(TM) CPU 3.00GHz
stepping : 3
cpu MHz : 3000.881
cache size : 2048 KB
physical id : 3
siblings : 2
core id : 3
cpu cores : 1
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pni monitor ds_cpl cid xtpr
bogomips : 5999.08線程

 

processor : 3
vendor_id : GenuineIntel
cpu family : 15
model : 4
model name : Intel(R) Xeon(TM) CPU 3.00GHz
stepping : 3
cpu MHz : 3000.881
cache size : 2048 KB
physical id : 3
siblings : 2
core id : 3
cpu cores : 1
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 5
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe lm constant_tsc pni monitor ds_cpl cid xtpr
bogomips : 5999.55

顯示4個邏輯CPU,經過physical id,前面兩個邏輯cpu的相同,後面兩個的相同,因此有兩個物理CPU。前面兩個的 core id相同,後面的兩個core ID相同,說明這兩個CPU都是單核。也就是說兩個單核cpu,啓用了超線程技術。
經過intel的cpu的參數能夠初步判斷 使用的是兩個 Xeon奔騰4CPU ,有點差。。。。
如何得到CPU的詳細信息:

linux命令:cat /proc/cpuinfo

用命令判斷幾個物理CPU,幾個核等:

邏輯CPU個數:
# cat /proc/cpuinfo | grep 'processor' | wc -l

物理CPU個數:
# cat /proc/cpuinfo | grep 'physical id' | sort | uniq | wc -l

每一個物理CPU中Core的個數:
# cat /proc/cpuinfo | grep 'cpu cores' | wc -l

是否爲超線程?
若是有兩個邏輯CPU具備相同的」core id」,那麼超線程是打開的。

每一個物理CPU中邏輯CPU(多是core, threads或both)的個數:
# cat /proc/cpuinfo | grep 'siblings'
其餘特徵:

目前intel新的多核心cpu都會在後面顯示具體的型號數字,例如:

model name : Intel(R) Xeon(R) CPU          X3230  @ 2.66GHz

說明是 Xeon 3230的cpu,而不顯示型號的具體數字的,大部分都是奔騰的CPU

不少主機商都騙人,用奔騰的cpu,卻說是多核心的CPU。

探針看到的數據:

類型:Intel(R) Xeon(TM) CPU 2.80GHz 緩存:1024 KB
類型:Intel(R) Xeon(TM) CPU 2.80GHz 緩存:1024 KB
類型:Intel(R) Xeon(TM) CPU 2.80GHz 緩存:1024 KB
類型:Intel(R) Xeon(TM) CPU 2.80GHz 緩存:1024 KB

沒有具體的型號,緩存1M,通常都是奔騰系列的cpu,或者是intel假雙核的cpu,具體要根據上面說的去判斷。新的多核心cpu都能看到具體的型號。
另外多核心的xeon的CPU,通常主頻都不高,達到2.8和3.0的只有不多的幾個高端CPU型號,通常主機商不會用這麼好的。


一些操做系統的最新版本已經更新了 /proc/cpuinfo 文件,以支持多路平臺。若是您的系統中的 /proc/cpuinfo 文件可以正確地反映出處理器信息,那麼就不須要執行上述步驟。反之,可採用本文中的信息進行解釋。

/proc/cpuinfo 文件包含系統上每一個處理器的數據段落。/proc/cpuinfo 描述中有 6 個條目適用於多內核和超線程(HT)技術檢查:processor, vendor id, physical id, siblings, core id 和 cpu cores。

processor 條目包括這一邏輯處理器的惟一標識符。
physical id 條目包括每一個物理封裝的惟一標識符。
core id 條目保存每一個內核的惟一標識符。
siblings 條目列出了位於相同物理封裝中的邏輯處理器的數量。
cpu cores 條目包含位於相同物理封裝中的內核數量。

若是處理器爲英特爾處理器,則 vendor id 條目中的字符串是 GenuineIntel。

1.擁有相同 physical id 的全部邏輯處理器共享同一個物理插座。每一個 physical id 表明一個惟一的物理封裝。

2.Siblings 表示位於這一物理封裝上的邏輯處理器的數量。它們可能支持也可能不支持超線程(HT)技術。

3.每一個 core id 均表明一個惟一的處理器內核。全部帶有相同 core id 的邏輯處理器均位於同一個處理器內核上。

4.若是有一個以上邏輯處理器擁有相同的 core id 和 physical id,則說明系統支持超線程(HT)技術。

5.若是有兩個或兩個以上的邏輯處理器擁有相同的 physical id,可是 core id 不一樣,則說明這是一個多內核處理器。cpu cores 條目也能夠表示是否支持多內核。

例如,若是系統包含兩個物理封裝,每一個封裝中又包含兩個支持超線程(HT)技術的處理器內核,則 /proc/cpuinfo 文件將包含此數據。(注:數據並不在表格中。)


轉載:http://blog.sina.com.cn/s/blog_4a6151550100iowl.html

相關文章
相關標籤/搜索