[macos] Mac OS X에서 다수의 * 논리적 * 코어를 발견하는 방법은 무엇입니까?

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 코어로 취급하는 것은 그리 나쁘지 않습니다.