Linux 系统中的dvfs功能

前言

最近硬件的同事需要我们提供的版本能动态调频,何为动态调频呢?对于CPU来讲,功耗和性能是一对不可调和的矛盾,通过调整CPU的电压和频率,可以在功耗和性能之间找一个平衡点。由于调整是在系统运行的过程中,因此这种功能也称作动态电压/频率调整(Dynamic Voltage/Frequency Scaling,DVFS)。说白了,就是在不需要高性能时,降低电压和频率,以降低功耗;在需要高性能时,提高电压和频率,以提高性能。

正文

在开机过程中,我们可以用下面的命令来读取目前CPU运行的频率:

# cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_cur_freq1488000

可以看到,我板子的运行频率为1488000 KHz。如果将命令封装在脚本中并开机自动,那么就能读取到开机过程中的运行频率变化了,如果开启了DVFS功能的话,读取到的值肯定是否变化的。
一开始,我手上的板子运行频率并没有变化,后来查阅了一些资料后,原来是脚本中设置了关闭,在我板子的inittab脚本中有这么几个命令:

null::sysinit:echo 1488000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freqnull::sysinit:echo 96000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freqnull::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_frequencies96000 192000 312000 408000 504000 600000 696000 816000 912000 1008000 1104000 1200000 1296000 1416000 1488000

支持的所有频率,动态调频就是在这几个值中变化

2、scaling_available_governors

# cat scaling_available_governorshotplug interactive conservative ondemand performance

除了一开始我们看到的几个调频策略,还有其他的策略可以通过这个节点获取

3、affected_cpus

# cat affected_cpus0 1 2 3

我们只是设置了CPU0的策略,但是在一些平台,其他的CPU会跟随主CPU的变化而变化,这个节点就可以看出来哪些online的CPU使用相同的策略

参考链接:https://blog.csdn.net/melody157398/article/details/7948101


  回复「 篮球的大肚子」进入技术群聊

回复「1024」获取1000G学习资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467929.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python是面向对象还是过程_python编程:面向对象与过程是什么?

编程任何一个要素的学习都是基于更方便,更快捷,更效率而存在的,当然面向对象也一样,针对这部分知识,大家可以浏览以下内容,看完即懂。先来看一组示例:面向过程思维:把大象装进冰箱需…

Android系统下内存使用情况与监测

(0). Android/Linux 内存分配的两个重要策略.Linux 在分配内存时, 为了节省内存, 按需分配, 使用了延时分配以及Copy-On-Write 的策略.延时分配即针对user space 申请memory 时, 先只是明面上的分配虚拟空间, 等到真正操作memory 时, 才真正分配具体的物理内存, 这个需要借助…

node进阶| 解决表单enctype=multipart/form-data 时获取不到Input值的问题

今天在学习node踩到一个坑:form设置enctype"multipart/form-data"上传文件时,无法获取到表单其他input的值。 因为之前上传文件用的是 formidable 方法1:formidable (无法获取其他input的值) 引包 app.js v…

错误异常处理 小数格式化,取证与四舍五入 random处理 日期与时间常用操作

异常处理 文章目录异常处理语法错误语义错误逻辑错误异常处理finallytryecceptfinallyraise测试unittest测试组织代码常用断言方法是否正确存在约等于判断是否应用判断是否为空判断是否为某型实例判断大于类与测试装置setup函数teardown函数小数格式化,取证与四舍五…

什么是内存泄漏?

在wikipedia这样解读内存泄漏的:在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就…

python cx_oracle配置_python连接oracle的模块cx_Oracle安装和配置

下载相应版本的cx_Oracle安装cx_Oracle-5.1.2-11g-py24-1.x86_64.rpm,其他版本类似,rpm -ivh cx_Oracle-5.1.2-11g-py24-1.x86_64.rpm安装简单,但需要配置下面的环境变量和软连接在/etc/profile,添加export LD_LIBRARY_PATH/usr/lib/oracle/…

requests库之处理响应

response对象: http状态码 利用response把流存储成图片或者文件 一个下载图片的实例 import requestsdef download_pic():#headers {User-Agent:Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/59.0.3071.109 Safari/537.36…

持久化概述

持久化概述 文章目录持久化概述对象持久化扁平文件pickleshelve数据库ORM扁平文件保留类型还原eval字符串转列表(不带,)![](https://img-blog.csdnimg.cn/20200201211443931.png?x-oss-processimage/watermark,type_ZmFuZ3poZW5naGVpdGk,sha…

五分钟读懂TCP 协议

TCP 是互联网核心协议之一,本文介绍它的基础知识。一、TCP 协议的作用互联网由一整套协议构成。TCP 只是其中的一层,有着自己的分工。(图片说明:TCP 是以太网协议和 IP 协议的上层协议,也是应用层协议的下层协议。&…

git原理浅析及命令介绍

状态描写叙述 请记住,工作文件夹以下的全部文件都不外乎这两种状态:已跟踪或未跟踪。已跟踪的文件是指本来就被纳入版本号控制管理的文件,在上次快照中有它们的记录,工作一段时间后,它们的状态可能是未更新。已改动或者…

python怎么跳转到某一行代码_Python中免验证跳转到内容页的实例代码

在本篇文章里小编给大家整理的是一篇关于Python中免验证跳转到内容页的实例代码,有兴趣的朋友们可以学习分享下。相信很多人在浏览网页时,经常会碰到需要输入验证码才可以继续浏览的情况吧,遇到这种问题,大多数人只能进行繁琐的注…

正则表达

文章目录正则表达数据验证字面值\d查数字^\w特殊符号匹配规则.除|n所有字符\d查数字\D非数字![在这里插入图片描述](https://img-blog.csdnimg.cn/20200203213049246.png)\s空白字符![在这里插入图片描述](https://img-blog.csdnimg.cn/20200203213145246.png)\S非空白字符![在…

《从三月开始……》

很多时候,我们对不同现状有所不满——对无法冲破的工作瓶颈不满对久不增长的收入不满对久不下降的体重不满对无法提高的学分不满对没有进展的关系不满……似乎总有某个方面的不顺给我们带来烦恼为此,我们也做了“努力”——我们通过各种渠道和平台去查阅…

Thread.join()

1.join() join()的作用是:“等待该线程终止”,这里需要理解的就是该线程是指的主线程等待子线程的终止。也就是在子线程调用了join()方法后面的代码,只有等到子线程结束了才能执行。 主线程生成并起动了子线程,而子线程里要进行大…

管理系统制作的python代码_python学生管理系统代码实现

本文实例为大家分享了python学生管理系统的具体代码,供大家参考,具体内容如下类class Student:stuID ""name ""sex "M"classID "NULL"#set IDdef setStuID(self,stuID):self.stuID stuIDdef setName(self,…

从未知到2019年的文章汇总

2018年下半年我正式把这个遗弃了很久的微信号运营起来,2019年应该是比较正式的一年,也是成长最快的一年。从开始捣鼓微信公众号到现在,我写了很多东西。这篇文章把之前写过的,不管是好的,还是不好的,都整理…

python modbus控制plc_python Modbus基础

modbus 协议 数据格式00 00 00 00 00 06 01 03 00 00 00 02 ascii码第一位:事务处理标识符 由服务器复制,通常为0第二位:事务处理标识符 由服务器复制,通常为0第三位:协议标识符0第四位:协议标识符0第五…

Binder远程转本地

前言在[031]Binder线程栈复用中,我们说到Binder驱动通过“线程栈复用”减少线程数,我们来讲一讲另外一个机制“远程转本地”,将远程Binder调用转化成本地方法调用。一、写个Demointerface IServiceB {void sendMsg(String msg); }1.1 Client…

linux这样去掉文件里高亮字体

终端输入:noh转载于:https://www.cnblogs.com/S--S/p/7365407.html

pythonb超分辨成像_Papers | 超分辨 + 深度学习(未完待续)

1. SRCNN1.1. Contributionend-to-end深度学习应用在超分辨领域的开山之作(非 end-to-end 见 Story.3 )。指出了超分辨方向上传统方法( sparse-coding-based SR methods )与深度学习方法的关系,insightful 。SRCNN网络非常简单,PSNR、SSIM 等却有小幅提升…