CPU和GPU频率的查看及设置

处理器/DSP

891人已加入

描述

 

 

在嵌入式设备中为了降低功耗防止芯片发热,厂商一般默认都将CPU和GPU频率为最小,为了提高性能,减少算法耗时需要手动将CPU或者GPU频率设到性能模式。

 

查看GPU频率

  •  
  •  
cat /sys/class/devfreq/gpufreq/cur_freqcat /sys/class/devfreq/gpufreq/max_freq

 

CPU相关节点路径/sys/devices/system/cpu/cpu0/cpufreq

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
cpuinfo_cur_freq              当前cpu正在运行的工作频率cpuinfo_max_freq              该文件指定了处理器能够运行的最高工作频率cpuinfo_min_freq              该文件指定了处理器能够运行的最低工作频率cpuinfo_transition_latency    该文件定义了处理器在两个不同频率之间切换时所需要的时间(单位:ns)scaling_available_frequencies 所有支持的主频率列表scaling_available_governors   该文件显示当前内核中支持的所有cpufreq governor类型scaling_cur_freq              CPU当前运行的主频率,governor和cpufreq核决定的scaling_driver                该文件显示该CPU正在使用何种cpufreq driverscaling_governor              通过echo命令,能够改变当前处理器的governor类型scaling_max_freq              显示policy的上限.当改变cpu policy时,需要首先设scaling_max_freqscaling_min_freq              显示policy的下限scaling_setspeed              governor为“userspace”,可设置cpu主频率值。值在scaling_min_freq和scaling_max_freq之间。

 

CPU的性能模式设置

  •  
echo performance > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor,

 

一般CPU都有多个核,需要手动开启每个核的性能模式

  •  
  •  
echo performance > /sys/devices/system/cpu/cpu1/cpufreq/scaling_governorecho performance > /sys/devices/system/cpu/cpuX/cpufreq/scaling_governor

X为CPU的核数

 

GPU的性能模式设置

  •  
echo performance > /sys/class/devfreq/ff9a0000.gpu/governor

每款芯片的上面红色的gpu数字都不一样,一般都是位于 /sys/class/devfreq/目录下

 

设置CPU的核心数

在/sys/devices/system/cpu目录下可以看到你的CPU有几个核心,如果是双核,就是cpu0和cpu1,如果是四核,还会加上cpu2和cpu3。随便进一个文件夹,比如cpu1,里面有个online文件。我们可以用cat命令查看该文件的内容:

  •  
cat /sys/devices/system/cpu/cpu1/online

 

这个文件只有一个数字,0或1。0表示该核心是offline状态的,1表示该核心是online状态的。所以,如果你想关闭这个核心,就把online文件的内容改为“0”;如果想打开该核心,就把文件内容改为“1”。

  •  
  •  
echo "0" > /sys/devices/system/cpu/cpu0/online #关闭该CPU核心echo "1" > /sys/devices/system/cpu/cpu0/online #打开该CPU核心

 

查看当前CPU支持的频率档位

  •  
  •  
#cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies1800000 1767000 1734000 1700000 1667000 1633000 1533000 1466000 1400000 1308000 1216000 1125000 1056000 987000 918000 850000

 

查看当前支持的governor

  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
# cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governorsschedplus ondemand userspace powersave interactive performance//1.performance 注重效率,将CPU频率固定工作在其支持的最高运行频率上,而不动态调节。//2.powersave   注重节能,将CPU会固定工作在其支持的最低运行频率上,而不动态调节。//3.Userspace   最早的cpufreq 子系统通过userspace governor为用户提供了这种灵活性。系统将变频策略的决策权交给了用户,提供了相应的接口。长期以来都在用的模式,可以通过手动编辑配置文件进行配置。//4.ondemand    定期检查负载,当CPU负荷超越了阈值,会立即达到最大频率运行。执行完毕立即回到最低频率;userspace是内核态的检测,用户态调整,效率低。而ondemand是完全在内核态下工作并且能够以更加细粒度的时间间隔对系统负载情况进行采样分析的governor。在ondemand governor监测到系统负载超过 up_threshold 所设定的百分比时,说明用户当前需要 CPU 提供更强大的处理能力,因此 ondemand governor 会将CPU设置在最高频率上运行。当 ondemand governor 监测到系统负载下降,可以降低 CPU 的运行频率时。ondemand governor 的最初实现是在可选的频率范围内调低至下一个可用频率,例如 CPU 支持三个可选频率,分别为 1.67GHz、 1.33GHz 和 1GHz ,如果 CPU 运行在 1.67GHz 时 ondemand governor 发现可以降低运行频率,那么 1.33GHz 将被选作降频的目标频率。//5.interactive 动态调节,检测时间是20ms,延迟20ms,一次调整周期40ms。//6.schedplus   动态调节,调频时间是1ms//7.conservative 该模式与ondemand的最大区别在于,conservative模式不会立刻在负载增加的情况下将cpu频率调整到最大,他会调整到比目前频率稍微大的频段去工作,某些情况下,该模式的延迟会大于ondemand。

 

查看当前选择的governor

  •  
  •  
#cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_governorschedplus

 

查看系统支持多少核数

  •  
  •  
# cat sys/devices/system/cpu/present0-3

 

全开所有CPU

  •  
  •  
//逐个echo 1 > cpu 0-3#echo 1 > /sys/devices/system/cpu/cpu1/online

 

设置CPU的频率
 

首先要修改governor的模式,但在修改前需要查下CPU支持哪些governor的模式

  •  
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors

 

  •  
#echo 850000 > sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

 

将模式调整为performance

  •  
echo "performance" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor

 

对CPU的频率进行修改,CPU的频率不是可以任意设置的,需要查看scaling_available_frequencies文件,看CPU支持哪些频率

  •  
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies

 

频率是以KHz为单位的,准备将cpu0设置为1.416GHz,那就将1416000写入scaling_setspeed即可

  •  
echo "1416000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed

 

查看当前这个核心的频率

  •  
cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_cur_freq

 

设置CPU的最大和最小频率

  •  
  •  
echo "1800000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq #设置最大频率echo "312000" > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq #设置最小频率

 

 

 审核编辑:汤梓红


打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分