2012-11-03 49 views

回答

3

請參閱以下鏈接,cpuinfo.cproc.c,可能會對您有所幫助。在第143行,你可以使用兩個函數遍歷cpus,cpumask_first,cpumask_next。我想,通過嘗試和錯誤,你可以找到解決方案。

+0

謝謝海洋。在你的幫助下,我找到了linux/cpumask.h,其中定義了int nr_cpu_ids,它正是我所期待的。 – TaborKelly

+0

歡迎您@ user1046602 :) – Ocean

+0

@ user1046602,請接受回答,讓這個問題得到解答並關閉:) 謝謝 – Ocean

0

您可以使用x86info。這不是每默認安裝(命令和apt-get安裝x86info(Ubuntu的))

x86info | grep Found 
Found 2 CPUs 

另一種方式是:

grep processor /proc/cpuinfo | wc -l 
2 

是您正在尋找什麼?

0

如果你使用的系統是Fedora的Linux的/ RHEL/CentOS的V6 +/Debian的Linux的V6 +,你可以使用lscpu

[email protected]:~$ lscpu 
Architecture:   i686 
CPU op-mode(s):  32-bit, 64-bit 
Byte Order:   Little Endian 
CPU(s):    4 
On-line CPU(s) list: 0-3 
Thread(s) per core: 2 
Core(s) per socket: 2 
Socket(s):    1 
Vendor ID:    GenuineIntel 
CPU family:   6 
Model:     37 
Stepping:    5 
CPU MHz:    1199.000 
BogoMIPS:    5319.88 
Virtualization:  VT-x 
L1d cache:    32K 
L1i cache:    32K 
L2 cache:    256K 
L3 cache:    3072K 

特別是你可能會感興趣的-p選項,讓你解析的輸出:

[email protected]:~$ lscpu -p 
# The following is the parsable format, which can be fed to other 
# programs. Each different item in every column has an unique ID 
# starting from zero. 
# CPU,Core,Socket,Node,,L1d,L1i,L2,L3 
0,0,0,,,0,0,0,0 
1,0,0,,,0,0,0,0 
2,1,0,,,1,1,1,0 
3,1,0,,,1,1,1,0 
0
$ nproc --all 
4 

--all打印安裝的處理器的數量

4

您可以使用num_online_cpus()來獲取可用cpus的數量。如果使用與系統中的cpus數量不同的maxcpus設置引導系統,這可能與nr_cpu_ids等不同。