명령 줄의 프로세서 / 코어 수


답변:


138

nproc 당신이 찾고있는 것입니다.

추가 정보 : http://www.cyberciti.biz/faq/linux-get-number-of-cpus-core-command/


11
훌륭하지만 / proc / cpuinfo만큼 유비쿼터스하지는 않습니다. nproc내 우분투 VM에는 있지만 RedHat 5.5 기반 컴퓨터에는 없습니다.
Digital Trauma

8
nproc --all설치된 모든 처리 장치 에 대해 확인하십시오 . 없이 --all, nproc오직 현재 프로세스에 사용할 수 처리 장치를 보여줍니다. 자세한 내용은 man 페이지를 참조하십시오. MMV.
JamesThomasMoon1979

96

가장 간단한 도구는 glibc와 함께 제공되며 다음과 getconf같습니다.

$ getconf _NPROCESSORS_ONLN
4

8
더 좋은 점은 POSIX 유틸리티입니다 : pubs.opengroup.org/onlinepubs/009604499/utilities/getconf.html .
BCran 2014

2
과 달리 nproc이것은 (기본적으로) mac os x에서 작동합니다.
Alec Jacobson

안타깝게도이 유틸리티는 Solaris에서 사용할 수 있지만 _NPROCESSORS_ONLN(또는 cpu, proc 등이있는 모든 항목) 출력에 나열됩니다. posix 도구이기 때문에 Linux / Solaris에서 작동하므로 분기를 사용할 필요가 없었습니다.
Brian Vandenberg 2015 년

39

나는 당신이 제공하는 방법이 Linux에서 가장 이식성이 있다고 생각합니다. 불필요 cat하고 wc프로세스 를 생성하는 대신 약간 단축 할 수 있습니다.

$ grep --count ^processor /proc/cpuinfo
2

25

이를 수행하여 Linux 및 OS X에서 작동하도록하려면 다음을 수행 할 수 있습니다.

CORES=$(grep -c ^processor /proc/cpuinfo 2>/dev/null || sysctl -n hw.ncpu)

좋은 휴대용 스크립트 :
mircealungu

2
Solaris에서는 psrinfo -p대신 사용해야 합니다
mems

14

최신 커널에서는 /sys/devices/system/cpu/인터페이스를 사용하여 더 많은 정보를 얻을 수도 있습니다 .

$ ls /sys/devices/system/cpu/
cpu0  cpufreq  kernel_max  offline  possible  present  release
cpu1  cpuidle  modalias    online   power     probe    uevent
$ cat /sys/devices/system/cpu/kernel_max 
255
$ cat /sys/devices/system/cpu/offline 
2-63
$ cat /sys/devices/system/cpu/possible 
0-63
$ cat /sys/devices/system/cpu/present 
0-1
$ cat /sys/devices/system/cpu/online 
0-1

참조 공식 문서를 무엇을 모든 평균에 대한 자세한 내용은.


2
nproc은 주로 이것을 사용합니다 ($ OMP_NUM_THREADS 다음에 readdir sysfs). 나는 이것이 더 나은 인터페이스라고 생각합니다.
Tobu

2
그리고 getconf는 또한이 인터페이스 ( online파일, nproc가하는 것보다 더 간단 함) 에 의존합니다
Tobu

6

누군가 "프로세서 / 코어 수"를 물으면 2 개의 답변이 요청됩니다. "프로세서"의 수는 시스템의 소켓에 설치된 물리적 수입니다.

"코어"의 수는 물리적 코어입니다. 하이퍼 스레딩 (가상) 코어는 포함되지 않을 것입니다 (적어도 내 마음에는). 스레드 풀을 사용하여 많은 프로그램을 작성하는 사람은 실제 코어 대 코어 / 하이퍼 스레드 수를 알아야합니다. 즉, 다음 스크립트를 수정하여 필요한 답변을 얻을 수 있습니다.

#!/bin/bash

MODEL=`cat /cpu/procinfo | grep "model name" | sort | uniq`
ALL=`cat /proc/cpuinfo | grep "bogo" | wc -l`
PHYSICAL=`cat /proc/cpuinfo | grep "physical id" | sort | uniq | wc -l`
CORES=`cat /proc/cpuinfo | grep "cpu cores" | sort | uniq | cut -d':' -f2`
PHY_CORES=$(($PHYSICAL * $CORES))
echo "Type $MODEL"
echo "Processors $PHYSICAL"
echo "Physical cores $PHY_CORES"
echo "Including hyperthreading cores $ALL"

하이퍼 스레딩도 지원하는 6 개의 물리적 코어가 각각있는 2 개의 모델 Xeon X5650 물리적 프로세서가있는 머신의 결과 :

Type model name : Intel(R) Xeon(R) CPU           X5650  @ 2.67GHz
Processors 2
Physical cores 12
Including hyperthreading cores 24

하이퍼 스레딩을 지원하지 않는 물리적 코어가 각각 4 개있는 mdeol Xeon E5472 프로세서 2 개가있는 컴퓨터에서

Type model name : Intel(R) Xeon(R) CPU           E5472  @ 3.00GHz
Processors 2
Physical cores 8
Including hyperthreading cores 8

이것이 제가 찾고 있던 정보를 제공 한 가장 철저한 답변입니다.
woodenToaster

4

lscpu(1)에 의해 제공 명령 폴더의 유틸리티 - 리눅스 프로젝트는 또한 유용 할 수 있습니다 :

$ lscpu
Architecture:          x86_64
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
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 58
Model name:            Intel(R) Core(TM) i7-3520M CPU @ 2.90GHz
Stepping:              9
CPU MHz:               3406.253
CPU max MHz:           3600.0000
CPU min MHz:           1200.0000
BogoMIPS:              5787.10
Virtualization:        VT-x
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              4096K
NUMA node0 CPU(s):     0-3

1

이것은 * bsd, * nix 또는 solaris에서 cpu 코어를 계산하는 휴대용 방법을 원하는 사람들을위한 것입니다 (aix 및 hp-ux에서 테스트하지는 않았지만 작동해야 함). 그것은 항상 나를 위해 일했습니다.

dmesg | \
egrep 'cpu[. ]?[0-9]+' | \
sed 's/^.*\(cpu[. ]*[0-9]*\).*$/\1/g' | \
sort -u | \
wc -l | \
tr -d ' '

솔라리스 grep&가 egrep없는 -o옵션이 너무 sed대신 사용됩니다.


1

하이퍼 스레드 코어를 계산 하지 않는 또 다른 한 줄 :

lscpu | awk -F ":" '/Core/ { c=$2; }; /Socket/ { print c*$2 }' 

0

OS 독립적 인 방법이 필요한 경우 Windows 및 Linux에서 작동합니다. 파이썬 사용

$ python -c 'import multiprocessing as m; print m.cpu_count()'
16
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.