이것은 인터넷에서 찾은 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
각각 최소 및 최대 반환 값을 결정합니다. 결과는 0보다 큰 것이 보장됩니다.
그리고
--all
인쇄 시스템에 설치된 프로세서 수. 이는 온라인 수 또는 현재 프로세스에 사용 가능한 수보다 클 수 있습니다. 이 경우
OMP_NUM_THREADS
또는 환경 변수는 존중되지 않습니다.OMP_THREAD_LIMIT