Linux系統中的dvfs功能

前言

最近硬件的同事需要我們提供的版本能動態調頻,何爲動態調頻呢?對於CPU來講,功耗和性能是一對不可調和的矛盾,通過調整CPU的電壓和頻率,可以在功耗和性能之間找一個平衡點。由於調整是在系統運行的過程中,因此這種功能也稱作動態電壓/頻率調整(Dynamic Voltage/Frequency Scaling,DVFS)。說白了,就是在不需要高性能時,降低電壓和頻率,以降低功耗;在需要高性能時,提高電壓和頻率,以提高性能。

正文

在開機過程中,我們可以用下面的命令來讀取目前CPU運行的頻率:

# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq
1488000

可以看到,我板子的運行頻率爲1488000 KHz。如果將命令封裝在腳本中並開機自動,那麼就能讀取到開機過程中的運行頻率變化了,如果開啓了DVFS功能的話,讀取到的值肯定是否變化的。
一開始,我手上的板子運行頻率並沒有變化,後來查閱了一些資料後,原來是腳本中設置了關閉,在我板子的inittab腳本中有這麼幾個命令:

null::sysinit:echo 1488000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
null::sysinit:echo 96000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
null::sysinit:echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

前兩條命令的含義是,動態頻率的變化範圍在96000 KHz~1488000 KHz,但是performance的含義是將CPU頻率固定工作在其支持的最高運行頻率上,而不動態調節。如果想設置爲動態調頻,則應該設置如下:

echo interactive > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

其實在/sys/devices/system/cpu/cpu0/cpufreq目錄下還有很多的節點,比如:

1、scaling_available_frequencies

# cat scaling_available_frequencies
96000 192000 312000 408000 504000 600000 696000 816000 912000 1008000 1104000 1200000 1296000 1416000 1488000

支持的所有頻率,動態調頻就是在這幾個值中變化

2、scaling_available_governors

# cat scaling_available_governors
hotplug interactive conservative ondemand performance

除了一開始我們看到的幾個調頻策略,還有其他的策略可以通過這個節點獲取

3、affected_cpus

# cat affected_cpus
0 1 2 3

我們只是設置了CPU0的策略,但是在一些平臺,其他的CPU會跟隨主CPU的變化而變化,這個節點就可以看出來哪些online的CPU使用相同的策略

參考鏈接:https://blog.csdn.net/melody157398/article/details/7948101

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章