我想用kthread_create()/ kthread_bind()爲每個CPU啓動一個內核線程。但是,我不能在我的生活中弄清楚如何查詢可用CPU的數量。我確實找到了CPU_SET手冊頁,但這也沒有幫助。如何獲得Linux內核模塊中的可用CPU集?
有什麼想法?
我想用kthread_create()/ kthread_bind()爲每個CPU啓動一個內核線程。但是,我不能在我的生活中弄清楚如何查詢可用CPU的數量。我確實找到了CPU_SET手冊頁,但這也沒有幫助。如何獲得Linux內核模塊中的可用CPU集?
有什麼想法?
您可以使用x86info。這不是每默認安裝(命令和apt-get安裝x86info(Ubuntu的))
x86info | grep Found
Found 2 CPUs
另一種方式是:
grep processor /proc/cpuinfo | wc -l
2
是您正在尋找什麼?
如果你使用的系統是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
$ nproc --all
4
--all打印安裝的處理器的數量
您可以使用num_online_cpus()來獲取可用cpus的數量。如果使用與系統中的cpus數量不同的maxcpus設置引導系統,這可能與nr_cpu_ids等不同。
謝謝海洋。在你的幫助下,我找到了linux/cpumask.h,其中定義了int nr_cpu_ids,它正是我所期待的。 – TaborKelly
歡迎您@ user1046602 :) – Ocean
@ user1046602,請接受回答,讓這個問題得到解答並關閉:) 謝謝 – Ocean