Aqui está a saída de nproc
vs nproc --all
e outro comando encontrado na internet. Eu ainda não consigo entender o porquê. É uma VM QEMU\KVM com CentOS 6.5 rodando sob outro CentOS 6.5.
Abaixo estão as saídas de alguns outros comandos:
[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 ~]#
Conforme indicado na resposta de Kusalananda , distingue entre o número de CPUs disponíveis para o processo atual e o número total de CPUs.
nproc
Em sistemas Linux, as CPUs disponíveis para o processo atual, quando o OpenMP não está envolvido, são determinadas pela máscara de afinidade do processo. Para ver isso, execute
taskset
:ou
schedtool
:(
taskset
faz parte doutil-linux
pacote e deve ser instalado por padrão;schedtool
é um pacote próprio e pode precisar ser instalado se você quiser usá-lo.)No seu caso, isso deve mostrar que seu shell está limitado a um único processador, e é por isso que as
nproc
saídas1
.Do início do
nproc
manual:então
A documentação info do GNU diz um pouco mais:
e