Mac OS X를 실행할 때 컴퓨터에 몇 개의 코어가 있는지 명령 줄에서 어떻게 알 수 있습니까? Linux에서는 다음을 사용합니다.
x=$(awk '/^processor/ {++n} END {print n+1}' /proc/cpuinfo)
완벽하지는 않지만 가깝습니다. 이것은에 공급하기위한 것이므로 make
결과가 실제 수보다 1 더 높습니다. 그리고 위의 코드는 Perl로 더 조밀하게 작성되거나 grep, wc 및 cut을 사용하여 작성할 수 있다는 것을 알고 있지만 위의 코드는 간결성과 가독성 사이의 좋은 균형이라고 판단했습니다.
매우 늦은 편집 : 명확히하기 위해 : 사용 가능한 논리 코어 수를 묻습니다 . 이는 동시에 make
생성 하려는 동시 작업 수와 일치하기 때문 입니다. Chris Lloyd가 더 개선 한 jkp의 대답은 정확히 내가 필요한 것입니다. YMMV.
답변
sysctl 유틸리티를 사용하여이를 수행 할 수 있습니다 .
sysctl -n hw.ncpu
답변
더 쉬운 방법 :
sysctl -n hw.ncpu
답변
이것은 크로스 플랫폼이어야합니다. 적어도 Linux 및 Mac OS X의 경우
python -c 'import multiprocessing as mp; print(mp.cpu_count())'
조금 느리지 만 작동합니다.
답변
C에서이를 수행하려면 sysctl (3) 함수 계열을 사용할 수 있습니다.
int count;
size_t count_len = sizeof(count);
sysctlbyname("hw.logicalcpu", &count, &count_len, NULL, 0);
fprintf(stderr,"you have %i cpu cores", count);
코어를 세는 “hw.logicalcpu”대신 사용할 흥미로운 값은 다음과 같습니다.
hw.physicalcpu - The number of physical processors available in the current power management mode.
hw.physicalcpu_max - The maximum number of physical processors that could be available this boot.
hw.logicalcpu - The number of logical processors available in the current power management mode.
hw.logicalcpu_max - The maximum number of logical processors that could be available this boot.
답변
system_profiler SPHardwareDataType
프로세서 1 개와 코어 4 개가 있습니다.
[~] system_profiler SPHardwareDataType
Hardware:
Hardware Overview:
Model Name: MacBook Pro
Model Identifier: MacBookPro9,1
Processor Name: Intel Core i7
Processor Speed: 2.6 GHz
Number of Processors: 1
Total Number of Cores: 4
<snip>
[~]
그러나 sysctl은 다음에 동의하지 않습니다.
[~] sysctl -n hw.logicalcpu
8
[~] sysctl -n hw.physicalcpu
4
[~]
그러나 모든 CPU 슬롯을 차지 해야하는 프로그램을 실행할 때이 프로그램이 CPU 시간의 800 % (in top
)에 걸리는 것처럼 sysctl이 올바르게 나타납니다 .
PID COMMAND %CPU
4306 top 5.6
4304 java 745.7
4296 locationd 0.0
답변
$ system_profiler | grep 'Total Number Of Cores'
답변
system_profiler | grep "Cores"
명령을 사용하십시오 .
나는 :
2012 년 중반 MacBook Pro Retina.
프로세서 : 2.6 GHz Intel Core i7
user$ system_profiler | grep "Cores"
Total Number of Cores: 4
user$ sysctl -n hw.ncpu
8
Wikipedia ( http://en.wikipedia.org/wiki/Intel_Core#Core_i7 ) 에 따르면 8 개의 물리적 코어가있는 Core i7이 없으므로 하이퍼 스레딩 아이디어가 반드시 필요합니다. 정확성을 sysctl
위해 system_profiler
값을 무시 하고 사용하십시오 . 실제 문제는 다른 프로세스를 방해하지 않고 4 개의 코어 (긴 컴파일 작업?)로 응용 프로그램을 효율적으로 실행할 수 있는지 여부입니다.
4 코어로 병렬화 된 컴파일러를 실행한다고해서 일반적인 OS 운영에 큰 영향을 미치지는 않습니다. 따라서 8 코어로 취급하는 것은 그리 나쁘지 않습니다.