当前位置: 首页 > news >正文

Linux下如何修改CPU 电源工作模式

最近处理一起历史遗留问题,感觉很爽。

现象:

     背景:设备采用ARM,即rk3568处理器,采用Linux系统;主要用于视觉后端处理

     现象:当软件运行一段时间,大概1个小时(也不是很固定),CPU使用率会变成原先一倍,这个到不影响软件使用流畅,但采集卡的驱动会出现异常,也开始丢帧了(甚至不出流),算是很严重的bug。

        作为资深软件开发人员,首先怀疑程序有问题,或某个线程挂掉了。但实际产生现象后,软件流畅度还是有所保证的,非视频相关一些操作都很正常。后来在跟采集卡厂家沟通过程中,发现采集卡驱动在CPU调频的时候会出现异常,需要重启驱动才可以恢复。

        

        然后,当然怀疑是CPU是否降频了,如果降频一半,的确会导致CPU占用率比较高。那么问题来了,怎么让CPU不主动降频呢?猜测应该是电源管理相关,特别是ARM这些嵌入式,的确默认会存在降频的可能。考虑本设备不用考虑节能的问题,所以针对此猜测,最好的解决办法就是CPU不降频。

  • 如何查看当前电源管理模式?

在设备端:

cd   /sys/devices/system/cpu/cpu0/cpufreq

如果没有该目录,说明该系统不支持电源管理模式(或系统裁剪掉了)

通过 ls 可以看到如下:

affected_cpus               related_cpus                   scaling_governor
cpuinfo_cur_freq            scaling_available_frequencies  scaling_max_freq
cpuinfo_max_freq            scaling_available_governors    scaling_min_freq
cpuinfo_min_freq            scaling_cur_freq               scaling_setspeed

其中 scaling_governor 就是当前电源管理模式,cat下就可以看到了

scaling_available_governors就是支持哪些管理模式(一般来说,都是至少支持以下5种)

①、Performance,最高性能,直接用最高频率,不考虑耗电。

②、Interactive,一开始直接用最高频率,然后根据 CPU 负载慢慢降低。

③、Powersave,省电模式,通常以最低频率运行,系统性能会受影响,一般不会用这个!

④、Userspace,可以在用户空间手动调节频率。

⑤、Ondemand,定时检查负载,然后根据负载来调节频率。负载低的时候降低 CPU 频率,这样省电,负载高的时候提高 CPU 频率,增加性能。

我的设备默认是 Interactive,现在需要改成 Performance

接下去的操作,无非是两种:

1. 在启动时候修改模式,注意要把每个CPU都修改了

2. 修改内核,默认改成 performance

下面是启动时候或者过程中(未验证过是否可行)修改模式

for i in $(seq 0 1 15)
doecho "performance" > /sys/devices/system/cpu/cpu${i}/cpufreq/scaling_governor
done
  • 如何在内核里修改默认performance?

进入kernel目录,输入make menuconfig ARCH=arm64

然后加载使用的config

选择 CPU power management  然后 选择 CPU Frequency scaling  (可能不同版本略有不同)

进入之后,如下图,选择默认的模式(其他地方不要修改,也不要直接把这个功能去掉)

然后save,重新build kernel ,更新kernel到板子上即可

http://www.lryc.cn/news/127538.html

相关文章:

  • Effective C++学习笔记(8)
  • 学校如何公布录取情况表?这个不用技术的方法,小白老师都能轻松制作
  • Chart GPT免费可用地址共享资源
  • 设计模式十八:中介者模式(Mediator Pattern)
  • 神经网络基础-神经网络补充概念-12-向量化逻辑回归的梯度输出
  • 2023-08-16力扣每日一题
  • 耗资170亿美元?三星电子在得克萨斯州建设新的半导体工厂
  • 黑马项目一阶段面试58题 Web14题(一)
  • 多线程与高并发--------线程池
  • 深度学习实战48-【未来的专家团队】基于AutoCompany模型的自动化企业概念设计与设想
  • 深入剖析:如何通过API优化云计算架构?快来看!
  • 基于STM32设计的中药分装系统
  • 消息队列学习笔记
  • 贝锐蒲公英:助力企业打造稳定高效的智能安防监控网络
  • SASS 学习笔记
  • Web菜鸟教程 - Springboot接入认证授权模块
  • 【深入理解ES6】块级作用域绑定
  • 使用fake为数据库生成随机数据
  • 树结构转List
  • Android复习(Android基础-四大组件)——Broadcast
  • Ubuntu下mysql8开启远程连接
  • java对象和json类型转换
  • elasticsearch-head 插件
  • Neo4j之FOREACH基础
  • 【SpringBoot】| 接口架构风格—RESTful
  • CentOS系统环境搭建(十)——CentOS7定时任务
  • 如何在安卓设备上安装并使用 ONLYOFFICE 文档
  • 【制作npm包1】申请npm账号、认识个人包和组织包
  • linux学习(文件描述符)[11]
  • 影响力再度提升,Smartbi多次蝉联Gartner、IDC等权威认可