
我使用 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.00 GHz。 目前CPU頻率為3.99 GHz。 目前 CPU 頻率為 4.00 GHz。 目前 CPU 頻率為 4.00 GHz。 $ cpufreq-資訊 | grep '當前CPU fr' 目前 CPU 頻率為 4.00 GHz。 目前 CPU 頻率為 4.00 GHz。 目前 CPU 頻率為 4.00 GHz。 目前CPU頻率為3.96 GHz。 $ cpufreq-資訊 | grep '當前CPU fr' 目前 CPU 頻率為 4.00 GHz。 目前 CPU 頻率為 4.00 GHz。 目前 CPU 頻率為 4.00 GHz。 目前CPU頻率為3.94 GHz。 $ cpufreq-資訊 | grep '當前CPU fr' 目前CPU頻率為4.01 GHz。 目前 CPU 頻率為 4.00 GHz。 目前 CPU 頻率為 4.00 GHz。 目前CPU頻率為3.98 GHz。
這種波動是由於硬體、BIOS、核心還是其他因素造成的?有沒有辦法設定CPU頻率使其完全不波動?
答案1
經過一些實驗,我想我可以回答我自己的問題。
如上所述在這個線程中,在某些 Intel 硬體上,有兩種方法來管理 CPU 頻率:
- 使用 pstate。
- 使用常規 ACPI。
當使用 pstate 時,BIOS 對時鐘速度有一定的發言權,這似乎是波動的根源。
intel_pstate=disable
您可以透過附加到核心參數來強制關閉 pstate (編輯/etc/default/grub
並將參數新增至GRUB_CMDLINE_LINUX_DEFAULT
.Finally run 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
對於當代英特爾處理器,頻率由處理器本身控制,軟體暴露的 P 狀態與效能等級相關。 頻率可以設定為單一的想法 對於英特爾酷睿處理器來說頻率是虛構的。即使縮放驅動程式選擇單一 P 狀態,處理器運作的實際頻率也是由處理器本身選擇的。 [1]
[1]https://www.kernel.org/doc/Documentation/cpu-freq/intel-pstate.txt
答案3
我讀這個帖子是因為我太想為我的CPU設置一個固定頻率,因為風扇不再工作了(當然,當你在國外一個失落的島嶼上潛水休閒時,這些事情就會發生!)所以我的觀點是更多的設定最低頻率( 800Mhz )..我最終成功地更改了/sys/devices/system/cpu/cpu*/cpufreq/ 中配置的每個cpu 中的scaling_max_freq & 現在可以了,頻率應該從800Mhz 移動至....800Mhz。它有效並解決了我遇到的過熱問題..(頻率現在為799Mhz並且不要移動,這使得CPU保持在50°C左右!)
PS:我還禁用了渦輪模式(3,1Ghz)