前言
之前我才剛將我的 Promox VE 從 Intel I7-4790 換成 AMD 5900X,整個速度提升非常多,真香。但是我發現一件事情,這個 CPU 在運作的時候會一直使用最高頻率。
這其實不是什麼壞事,這可以帶來充足的效能,但是也會造成電力的浪費。所以我就在想,有沒有一個東西是像 Windows 的電源選項可以調整的。
操作步驟
我們可以使用 cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
來檢視你的 CPU 預設可以使用哪些設定檔。
# AMD 5900X 的結果
conservative ondemand userspace powersave performance schedutil
每個設定檔都是代表不同的意思,參考 Redhat 的這篇文章,意思大概如下:
performance:強迫 CPU 使用最高頻率運作。
powersave:強迫 CPU 使用最低的頻率運作。
ondemand:視需求,閒置時以最低頻率運作;但當有附載時,直接調到最高。
conservative:與 ondemand 類似,但他會改使用漸進方式調整頻率。
userspace:使用者客製化。
所以我們可以使用 cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
來看看目前 CPU 在哪個設定檔上。
可以看到我的 CPU 正在使用 performance
,意味著一直運作在最高頻率。(他會列出所有核心,但篇幅關係我刪減了。)
root@pve1:~# cat /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
performance
我這邊想用 conservative
,所以可以使用以下命令來更改。
echo "conservative" | tee /sys/devices/system/cpu/cpu*/cpufreq/scaling_governor
之後可以使用 watch -n 1 "cat /proc/cpuinfo | grep MHz"
來查看當前的時脈,每秒更新一次。
Every 1.0s: cat /proc/cpuinfo | grep MHz
cpu MHz : 2199.403
cpu MHz : 2199.668
cpu MHz : 2199.066
cpu MHz : 2194.734
cpu MHz : 2197.826
cpu MHz : 2200.000
cpu MHz : 2198.713
cpu MHz : 2199.530
cpu MHz : 2197.944
cpu MHz : 2199.480
cpu MHz : 2198.918
cpu MHz : 2199.376
cpu MHz : 2198.299
cpu MHz : 2199.550
cpu MHz : 2198.969
cpu MHz : 2199.415
cpu MHz : 2198.400
cpu MHz : 2199.202
cpu MHz : 2199.135
cpu MHz : 2198.836
cpu MHz : 2200.000
cpu MHz : 2198.339
cpu MHz : 2199.550
cpu MHz : 2198.912