美文网首页
Linux内核dvfs之cpufreq介绍

Linux内核dvfs之cpufreq介绍

作者: 小田BSP | 来源:发表于2022-06-09 23:14 被阅读0次

    本文基于Linux4.4内核介绍CPUFreq

    Linux内核中,CPUFreq支持动态调整CPU频率和电压,从而兼顾系统的性能和功耗。例:需要CPU高性能时,提升CPU频率和电压;反之,降低CPU频率和电压。

    一、CPUFreq调频策略

    CPUFreq的调频策略主要包括:

    1、conservative

    保守模式,根据CPU负载动态调频,按一定的比例平滑的升高或降低频率。

    2、interactive

    交互模式,直接上最高频率,然后根据CPU负载慢慢降低。

    3、ondemand

    按需响应模式,定期检查负载,根据负载来调节频率。

    4、performance

    高性能模式,性能优先。不考虑耗电,以CPU最高频率运行。

    5、powersave

    省电模式,功耗优先。以CPU最低频率运行,一般不用。

    6、userspace

    用户隔离模式,用户空间手动调节频率,系统不会调整。

    二、CPUFreq调试方法

    RockPI 4A单板为例,该单板使用RK3399处理器(双核A72+四核A53)和Linux 4.4内核,CPUFreq相关参数如下:

    1、小核

    ## 1、CPU0 CPUFreq相关配置参数
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# ls -l
    total 0
    -r--r--r-- 1 root root 4096 Aug 16 14:49 affected_cpus
    -r-------- 1 root root 4096 Aug 16 14:49 cpuinfo_cur_freq
    -r--r--r-- 1 root root 4096 Aug 16 14:49 cpuinfo_max_freq
    -r--r--r-- 1 root root 4096 Aug 16 14:49 cpuinfo_min_freq
    -r--r--r-- 1 root root 4096 Aug 16 14:49 cpuinfo_transition_latency
    drwxr-xr-x 2 root root    0 Aug 16 14:49 ondemand
    -r--r--r-- 1 root root 4096 Aug 16 14:49 related_cpus
    -r--r--r-- 1 root root 4096 Aug 16 14:49 scaling_available_frequencies
    -r--r--r-- 1 root root 4096 Aug 16 14:49 scaling_available_governors
    -r--r--r-- 1 root root 4096 Aug 16 14:49 scaling_cur_freq
    -r--r--r-- 1 root root 4096 Aug 16 14:49 scaling_driver
    -rw-r--r-- 1 root root 4096 Aug 16 14:49 scaling_governor
    -rw-r--r-- 1 root root 4096 Aug 16 14:49 scaling_max_freq
    -rw-r--r-- 1 root root 4096 Aug 16 14:49 scaling_min_freq
    -rw-r--r-- 1 root root 4096 Aug 16 14:49 scaling_setspeed
    drwxr-xr-x 2 root root    0 Aug 16 14:49 stats
    ## 2、CPUFreq影响的CPU Core,不显示offline状态
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat affected_cpus
    0 1 2 3
    ## 3、CPU0当前频率
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat cpuinfo_cur_freq
    408000
    ## 3、CPU0支持的最大频率
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat cpuinfo_max_freq
    1416000
    ## 3、CPU0支持的最小频率
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat cpuinfo_min_freq
    408000
    ## 4、频率转换延迟
    root@linaro-alip:/sys/devices/system/cpu/cpu1/cpufreq# cat cpuinfo_transition_lattency
    40000
    ## 5、包括online和offline所有CPU Core
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat related_cpus
    0 1 2 3
    ## 6、可用频率列表
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_available_frequencies
    408000 600000 816000 1008000 1200000 1416000
    ## 7、可用的governors
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_available_governors
    conservative ondemand userspace powersave interactive performance
    ## 8、当前频率
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_cur_freq
    408000
    ## 9、当前governor
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_governor
    ondemand
    ## 10、当前调频策略的最大频率
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_max_freq
    1416000
    ## 11、当前调频策略的最小频率
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_min_freq
    408000
    ## 12、在governor为userspace时,可通过设置scaling_setspeed,修改当前频率
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_setspeed
    <unsupported>
    ## 13、设置governor为userspace,后续可以调整频率
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# echo userspace > scaling_governor
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_governor
    userspace
    ## 14、设置当前频率
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat scaling_setspeed
    408000
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# echo 600000 > scaling_setspeed
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cat cpuinfo_cur_freq
    600000
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq#
    ## 1、CPU1 ~ CPU3 与CPU0 CPUFreq相关配置相同
    root@linaro-alip:/sys/devices/system/cpu/cpu0/cpufreq# cd ../../cpu1/cpufreq
    root@linaro-alip:/sys/devices/system/cpu/cpu1/cpufreq# cat cpuinfo_cur_freq
    600000
    root@linaro-alip:/sys/devices/system/cpu/cpu1/cpufreq# cat scaling_governor
    userspace
    
    

    2、大核

    root@linaro-alip:/sys/devices/system/cpu/cpu4/cpufreq# ls -l
    total 0
    -r--r--r-- 1 root root 4096 Aug 16 15:19 affected_cpus
    -r-------- 1 root root 4096 Aug 16 15:19 cpuinfo_cur_freq
    -r--r--r-- 1 root root 4096 Aug 16 15:19 cpuinfo_max_freq
    -r--r--r-- 1 root root 4096 Aug 16 15:19 cpuinfo_min_freq
    -r--r--r-- 1 root root 4096 Aug 16 15:19 cpuinfo_transition_latency
    drwxr-xr-x 2 root root    0 Aug 16 15:19 ondemand
    -r--r--r-- 1 root root 4096 Aug 16 15:19 related_cpus
    -r--r--r-- 1 root root 4096 Aug 16 15:19 scaling_available_frequencies
    -r--r--r-- 1 root root 4096 Aug 16 15:19 scaling_available_governors
    -r--r--r-- 1 root root 4096 Aug 16 15:19 scaling_cur_freq
    -r--r--r-- 1 root root 4096 Aug 16 15:19 scaling_driver
    -rw-r--r-- 1 root root 4096 Aug 16 14:43 scaling_governor
    -rw-r--r-- 1 root root 4096 Aug 16 15:19 scaling_max_freq
    -rw-r--r-- 1 root root 4096 Aug 16 15:19 scaling_min_freq
    -rw-r--r-- 1 root root 4096 Aug 16 15:19 scaling_setspeed
    drwxr-xr-x 2 root root    0 Aug 16 15:19 stats
    root@linaro-alip:/sys/devices/system/cpu/cpu4/cpufreq# cat affected_cpus
    4 5
    

    大核与小核配置相同,不再单独介绍。

    注:转载请注明出处。

    相关文章

      网友评论

          本文标题:Linux内核dvfs之cpufreq介绍

          本文链接:https://www.haomeiwen.com/subject/qfjvmrtx.html