这是从互联网上找到的nproc
vs和其他命令的输出。nproc --all
我仍然无法理解为什么。它是一个 QEMU\KVM 虚拟机,在其他 CentOS 6.5 上运行 CentOS 6.5。
以下是其他一些命令的输出:
[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 ~]#
如Kusalananda的回答所示,
nproc
区分当前进程可用的 CPU 数量和 CPU 的总数。在 Linux 系统上,当不涉及 OpenMP 时,当前进程可用的 CPU 由进程的关联掩码决定。要看到这一点,请运行
taskset
:或
schedtool
:(
taskset
是util-linux
包的一部分,应该默认安装;schedtool
是它自己的包,如果你想使用它可能需要安装。)在您的情况下,这应该表明您的外壳仅限于单个处理器,这就是为什么
nproc
输出1
。从
nproc
手册的顶部:然后
GNU 信息文档说的更多:
和