2012 MacBook Pro 쿼드 코어에서 예상대로 작동하는 CPU 집약적 스레드 작업을 작성했습니다. 20 스레드로 느슨하게 돌리고 최소 제한으로 Intel Power Gadget으로 측정했을 때 온도가 약 100 ° C까지 올라갑니다.
듀얼 코어 머신을 사용하여 동일한 프로그램과 데이터 파일을 2016 년 13 인치 MacBook Pro로 가져와 시동하면 온도가 100 ° C에 도달 할 때까지 3.3-3.4GHz를 유지할 것으로 예상됩니다. 맨 위 명령은 작업을 350 % (각 이중 스레드 2 개 코어)로 보여 주지만 CPU 주파수는 60 ° C 정도의 온도에서 팬이 조용히 정지 된 상태에서 1.6-1-8GHz로 줄어 듭니다. 단일 스레드 CPU 작업의 경우, 머신은 100 ° C에 도달하고 팬이 크 랭킹 될 때까지 3.3-3.4 GHz를 유지하면서 예상대로 작동합니다. 문제는 왜 CPU가 조절 되는가?
두 머신 모두 최신 버전이며 동일한 버전의 gcc를 실행합니다. 작업 기계에서 바이너리를 가져 와서 2016 Mac에 넣으면 같은 문제가 있습니다.
3 ~ 4 개의 CPU 단일 스레드를 실행하여 컴퓨터가 최고 속도로 가고 스레드 프로그램을 시작하면 주파수가 느려집니다.
두 시스템 모두 16GB의 RAM이 있습니다.
편집하다
코드로 놀아 본 후 작업이 너무 많은 스레드를 만들 때 스로틀 링되는 것으로 의심됩니다. 이 프로그램에서는 읽은 각 레코드를 가져 와서 스레드를 만듭니다. 한 번에 20 개 정도의 스레드 만 허용하므로 21 개가 넘는 스레드는 없지만 30 분 동안 처리 할 14,400,000 개의 레코드가 있으므로 각 레코드는 별도의 스레드로 처리됩니다.
CPU 시간을 단축하고 그중 10 개를 실행하는 간단한 pthread 프로그램을 만들었습니다. 문제가 발생한 노트북은 문제없이 95C까지 예열했습니다.
동일한 스레드를 파괴하고 다시 시작하는 대신 동일한 스레드를 재사용하기 위해 코드를 다시 작성한다고 생각합니다.
업데이트 5/13/17
몇 시간의 작업 후에는 이제 n 개의 스레드 만 생성하고 재사용하여 도움이되지 않았습니다. CPU 온도 이외의 다른 이유로이 기계가 스로틀되는 원인은 무엇입니까?