
벤치마킹을 위해 Debian 8 amd64 머신을 사용하고 있습니다. 실험하는 동안 CPU가 고정된 주파수(가급적이면 가능한 최대)에서 작동하고 싶습니다. 이렇게 하면 결과 변동의 원인이 되는 CPU 클럭 속도가 배제됩니다.
조금 읽어본 후에는 CPU 관리자를 로 변경하는 것이 올바른 것으로 보입니다 performance
. 이에 대해서는 설명되어 있습니다.여기 Linux 커널 문서에 있습니다.:
CPUfreq 거버너 "성능"은 CPU를 Scaling_min_freq 및 Scaling_max_freq 경계 내에서 가장 높은 주파수로 정적으로 설정합니다.
안타깝게도 scaling_min_freq
및 에 대한 자세한 내용 scaling_max_freq
은 제공되지 않습니다. 사용된 CPU 주파수는 간격의 최대값이므로 문제가 되지 않기를 바랍니다.
그래서 저는 cpufreq-set를 사용하여 이 거버너를 활성화했습니다:
$ 고양이 /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor 성능 성능 성능 성능
그리고 좋은 측정을 위해 BIOS에서 터보 부스트 모드도 비활성화했습니다.
$ 고양이 /sys/devices/system/cpu/intel_pstate/no_turbo 1
성능 거버너에 대한 위의 설명을 바탕으로 CPU 클럭 속도에는 변동이 없을 것으로 예상됩니다. 그러나 를 반복적으로 실행하면 cpufreq-info
클럭 속도가 변동하는 것을 볼 수 있습니다.
$ CPUFreq-정보 | grep '현재 CPU fr' 현재 CPU 주파수는 4.00GHz입니다. 현재 CPU 주파수는 3.99GHz입니다. 현재 CPU 주파수는 4.00GHz입니다. 현재 CPU 주파수는 4.00GHz입니다. $ CPUFreq-정보 | grep '현재 CPU fr' 현재 CPU 주파수는 4.00GHz입니다. 현재 CPU 주파수는 4.00GHz입니다. 현재 CPU 주파수는 4.00GHz입니다. 현재 CPU 주파수는 3.96GHz입니다. $ CPUFreq-정보 | grep '현재 CPU fr' 현재 CPU 주파수는 4.00GHz입니다. 현재 CPU 주파수는 4.00GHz입니다. 현재 CPU 주파수는 4.00GHz입니다. 현재 CPU 주파수는 3.94GHz입니다. $ CPUFreq-정보 | grep '현재 CPU fr' 현재 CPU 주파수는 4.01GHz입니다. 현재 CPU 주파수는 4.00GHz입니다. 현재 CPU 주파수는 4.00GHz입니다. 현재 CPU 주파수는 3.98GHz입니다.
이러한 변동은 하드웨어, BIOS, 커널 또는 기타 요인으로 인한 것입니까? CPU 주파수가 전혀 변동하지 않도록 설정하는 방법이 있습니까?
답변1
몇 가지 실험을 거친 후에는 내 질문에 답할 수 있을 것 같습니다.
말한 바와 같이이 스레드에서, 특정 Intel 하드웨어에는 CPU 주파수를 관리하는 두 가지 방법이 있습니다.
- pstate를 사용합니다.
- 일반 ACPI를 사용합니다.
pstate를 사용하면 BIOS에서 클럭 속도에 대해 어느 정도 권한을 부여하는데, 이것이 변동의 원인인 것 같습니다.
intel_pstate=disable
커널 인수에 추가하여 pstate를 강제로 끌 수 있습니다 ( /etc/default/grub
인수를 편집하고 에 추가합니다 GRUB_CMDLINE_LINUX_DEFAULT
. 마지막으로 실행합니다 sudo update-grub
).
이 작업을 수행한 후에는 의 출력이 cpufreq-info
많이 달라 보이고, 다른 CPU 거버너 세트도 사용할 수 있게 되었습니다(예: ondemand
이제 사용할 수 있음).
가장 중요한 점은 거버너를 로 설정한 후 performance
이제 클럭 속도가 고정된다는 것입니다(제 경우에는 4.00GHz).
/sys/devices/system/cpu/cpu*/cpufreq/scaling_driver
pstate 또는 ACPI가 CPU 확장에 사용되고 있는지 확인하기 위해 조사할 수 있습니다 . 이러한 파일은 acpi-cpufreq
또는 intel_pstate
.
답변2
최신 Intel 프로세서의 경우 주파수는 프로세서 자체에 의해 제어되며 소프트웨어에 노출된 P 상태는 성능 수준과 관련됩니다. 주파수를 단일로 설정할 수 있다는 아이디어 Intel Core 프로세서의 주파수는 허구입니다.. 스케일링 드라이버가 단일 P 상태를 선택하더라도 프로세서가 실행될 실제 주파수는 프로세서 자체에서 선택됩니다. [1]
[1]https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt
답변3
팬이 더 이상 작동하지 않기 때문에 CPU에 고정 주파수를 설정하려고 너무 많이 찾고 있었기 때문에 이 스레드를 읽었습니다. (물론 이러한 일은 다이빙 여가를 위해 잃어버린 섬에 해외에 있을 때 발생합니다!) 그래서 내 요점은 설정하는 것이 더 많았습니다. 가장 낮은 주파수(800Mhz) ..마침내 구성의 각 CPU에 대해 /sys/devices/system/cpu/cpu*/cpufreq/에서 scale_max_freq를 변경하는 데 성공했습니다. 이제 주파수가 800Mhz에서 이동해도 괜찮습니다. ....800Mhz로. 그것은 작동하고 내가 경험한 과열 문제를 해결했습니다.(주파수는 이제 799Mhz이고 CPU가 약 50°C를 유지할 수 있도록 움직이지 마십시오!)
추신: 터보 모드도 비활성화합니다(3,1Ghz).