
これは、インターネット上で見つかったnproc
vsやその他のコマンドの出力です。nproc --all
私はまだなぜそれを理解していません。 CentOS 6.5 およびその他の CentOS 6.5 を実行する QEMU\KVM VM。
以下は他のコマンドの出力です。
[root@h1-nms ~]# nproc
1
[root@h1-nms ~]# nproc --all
3
[root@h1-nms ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 3
On-line CPU(s) list: 0-2
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 3
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 13
Stepping: 3
CPU MHz: 2194.710
BogoMIPS: 4389.42
Hypervisor vendor: KVM
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 4096K
NUMA node0 CPU(s): 0-2
[root@h1-nms ~]# getconf _NPROCESSORS_ONLN
3
[root@h1-nms ~]# cat /proc/$$/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes
Max data size unlimited unlimited bytes
Max stack size 10485760 unlimited bytes
Max core file size unlimited unlimited bytes
Max resident set unlimited unlimited bytes
Max processes 32000 32000 processes
Max open files 64000 64000 files
Max locked memory 65536000 65536000 bytes
Max address space unlimited unlimited bytes
Max file locks unlimited unlimited locks
Max pending signals 191509 191509 signals
Max msgqueue size 819200 819200 bytes
Max nice priority 0 0
Max realtime priority 0 0
Max realtime timeout unlimited unlimited us
[root@h1-nms ~]# grep "" /sys/devices/system/cpu/cpu*/online
/sys/devices/system/cpu/cpu1/online:1
/sys/devices/system/cpu/cpu2/online:1
[root@h1-nms ~]# uname -a
Linux h1-nms 2.6.32-431.el6.x86_64 #1 SMP Fri Nov 22 03:15:09 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
[root@h1-nms ~]# cat /etc/*-release
CentOS release 6.5 (Final)
CentOS release 6.5 (Final)
CentOS release 6.5 (Final)
[root@h1-nms ~]#
答え1
に示すように先行は達成するのが難しい~の回答、nproc
現在のプロセスで使用可能なCPUの数とCPUの総数を区別します。
Linux システムで OpenMP が関係していない場合、現在のプロセスで使用可能な CPU は、プロセスのアフィニティマスクによって決定されます。これを確認するには、以下を実行してくださいtaskset
。
taskset -p $$
またはschedtool
:
schedtool $$
(taskset
パッケージの一部util-linux
なので、デフォルトでインストールする必要があります。それはschedtool
それ自身のパッケージなので、使用するためにインストールする必要があるかもしれません。)
あなたの場合、これはシェルが単一のプロセッサに制限されていることを示します。これはnproc
出力です1
。
答え2
マニュアルの上部からnproc
:
現在のプロセスで使用可能な処理装置の数を印刷します。これは、オンラインプロセッサの数より少なくてもよい。
それから
--all
取り付けられているプロセッサーの数を印刷します。
GNU情報文書には、次の内容が詳細に記載されています。
現在のプロセスで使用可能な処理装置の数を印刷します。これは、オンラインプロセッサの数より少なくてもよい。この情報にアクセスできない場合は、取り付けられているプロセッサの数が印刷されます。
OMP_NUM_THREADS
あるいは、環境変数が設定されている場合は、OMP_THREAD_LIMIT
それぞれ最小値と最大値を決定します。結果はゼロより大きいことが保証されます。
そして
--all
印刷システムにインストールされているプロセッサの数。これは、オンライン数、または現在のプロセスで使用可能な数よりも大きくなる可能性があります。この場合、
OMP_NUM_THREADS
または環境変数は尊重されません。OMP_THREAD_LIMIT