3

kthread_create()/ kthread_bind()を使用して、CPUごとに1つのカーネルスレッドを開始したいと思います。ただし、使用可能なCPUの数を照会する方法を一生理解することはできません。CPU_SETのマニュアルページを見つけましたが、それも役に立ちませんでした。

何かご意見は?

4

5 に答える 5

5

num_online_cpus() を使用して、使用可能な CPU の数を取得できます。これは、システム内の cpu の数とは異なる maxcpus 設定を使用してシステムが起動された場合、nr_cpu_ids などとは異なる場合があります。

于 2014-04-04T12:10:40.060 に答える
3

次のリンクcpuinfo.cproc.cを参照してください。143 行目では、cpus をトラバースするための 2 つの関数、cpumask_first、cpumask_next を使用できます。試行錯誤すれば、解決策が見つかると思います。

于 2012-11-03T18:32:45.360 に答える
0

Fedora Linux / RHEL / CentOS v6 + / Debian Linux v6 +であるシステムを使用している場合は、以下を使用できますlscpu

michael@test:~$ 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特に、解析可能な出力を提供するオプションに興味があるかもしれません。

michael@test:~$ 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
于 2012-11-03T18:01:00.740 に答える
0
$ nproc --all
4

--all インストールされているプロセッサの数を出力します

于 2012-11-03T18:08:58.843 に答える
0

x86info を使用できます。デフォルトでインストールされているわけではありません(sudo apt-get install x86info(ubuntu))

x86info | grep Found
Found 2 CPUs

別の方法は次のとおりです。

grep processor /proc/cpuinfo | wc -l
2

それはあなたが探しているものですか?

于 2012-11-03T17:49:04.120 に答える