多语言展示
当前在线:1136今日阅读:103今日分享:49

算法中如何设置CPU频率CSDN

今天的这篇经验和大家聊一聊关于算法中如何设置CPU频率CSDN的问题,希望能够帮助到有需要的朋友。
方法/步骤
1

在kernel中实现了两个driver,一个负责控制开关CPU的核数,叫做hot-plug驱动,另一个负责调整CPU的频率,叫做DVFS驱动。kernel中的driver会根据系统的负载,自动调整使用几个CPU和调整CPU频率。如果负载高了,提高频率,或者多开几个核,或者开大核。如果负载降下去了,就可以关大核,关核,降频。以下是两个知名手机厂商开源的config配置文档:

2

在adb shell命令下,和cpu频率相关的目录:/sys/devices/system/cpu/cpuX, X表示cpu number.:/sys/devices/system/cpu/cpu0/cpufreq # lsaffected_cpus              related_cpus                  scaling_governorcpuinfo_cur_freq           scaling_available_frequencies scaling_max_freqcpuinfo_max_freq           scaling_available_governors   scaling_min_freqcpuinfo_min_freq           scaling_cur_freq              scaling_setspeedcpuinfo_transition_latency scaling_driver                stats这些文件节点的读写属性:

3

cpuinfo_cur_freq: 当前cpu正在运行的工作频率cpuinfo_max_freq:该文件指定了处理器能够运行的最高工作频率 (单位: 千赫兹)cpuinfo_min_freq :该文件指定了处理器能够运行的最低工作频率 (单位: 千赫兹)cpuinfo_transition_latency:该文件定义了处理器在两个不同频率之间切换时所需要的时间  (单位: 纳秒)scaling_available_frequencies:所有支持的主频率列表  (单位: 千赫兹)scaling_available_governors:该文件显示当前内核中支持的所有cpufreq governor类型scaling_cur_freq:被governor和cpufreq核决定的当前CPU工作频率。该频率是内核认为该CPU当前运行的主频率scaling_driver:该文件显示该CPU正在使用何种cpufreq driverscaling_governor:通过echo命令,能够改变当前处理器的governor类型scaling_max_freq:显示当前policy的上下限  (单位: 千赫兹)需要注意的是,当改变cpu policy时,需要首先设置scaling_max_freq, 然后才是scaling_min_freqscaling_setspeed:如果用户选择了“userspace” governor, 那么可以设置cpu工作主频率到某一个指定值。只需要这个值在scaling_min_freq 和 scaling_max_freq之间即可。工作模式:cat scaling_available_governors:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_available_governorsondemand userspace powersave interactive performanceCPU的频率调节模式:1. Performance.  不考虑耗电,只用最高频率。2. Interactive.  直接上最高频率,然后看CPU负荷慢慢降低。3. Powersave.    通常以最低频率运行,流畅度会受影响,一般不会用这个吧!4. Userspace.    可以在用户空间手动调节频率。5. Ondemand.    定期检查负载,根据负载来调节频率。

4

对于这项飞思卡尔的实现:默认使用了performance,不过freescale在boot完成后改成了interactive.device/fsl/tek_mx6/init.rc:on property:sys.boot_completed=1# Set default CPU frequency governor# Set timer 40ms, min sample 60ms,hispeed at cpufreq MAX freq in freq_table at load 40%    write /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor interactive最终可通过scaling_governor文件查看。

5

工作频率:当前支持的cpu调节模式可通过 scaling_available_frequencies 查看。:/sys/devices/system/cpu/cpu0/cpufreq # cat scaling_available_frequencies1092 858 637 364相关的数据结构:kernel-4.4$ vi ./include/linux/cpufreq.h +59

6

根据平台以及默认的最大频率来选择对应的频率列表。所以降频有两种方法:1. 直接编译静态修改频率列表。2. 通过scaling_max_freq文件动态写入。

注意事项

以上内容整理自互联网

推荐信息