初探Linux CPU动态调频与实测

关于

本文主要涉及Linux CPUFreq子系统是什么,为什么需要,怎么用。

并解决在实际测试中遇到的三个问题:

  • scaling_governor没有userspace的问题。
  • /proc/cpuinfocpuinfo_cur_freq显示频率不同。
  • 无法针对单个核心调频并使一个CPU下的不同的核心运行在不同的频率下。

参考资料

  1. Linux 2.6 内核中的最新电源管理技术综述_CPUFreq
  2. Linux动态频率调节系统CPUFreq
  3. Fedora社区对于问题一的讨论地址
  4. Archlinux论坛对于问题一的讨论地址
  5. StackExchange 问题:Why do cpuinfo_cur_freq and /proc/cpuinfo report different numbers?
  6. Stackoverflow 问题:Understanding cpu frequency, thread selection and more
  7. Intel 论坛问题:How can I scale only one core’s frequency in a multi-core processor?

初探变频技术:在Linux中查看CPU相关信息

再问为什么之前,可以先看看到底Linux变频到底是什么,可以通过什么手段来看。

本部分使用的操作系统是Fedora27linux内核版本是4.13。本部分参考参考资料2的博客。

在Linux系统中查看与CPU相关的信息主要有两个方法:

  • 通过查看/proc/cpuinfo,比如当前运行频率可以通过|grep MHz查看。但是这个方法在413,414内核变动较大,不推荐通过此方法查看。具体的原因可以见后面的小节。
  • 另外一个方法是通过sysfs查看与修改,目录是/sys/devices/system/cpu/cpu*

先主要通过第二个方法进行查看:

与CPU相关的sysfs接口均在此目录下,可以通过查看这些文件内容查看CPU相关的信息,例如:

  • online offline 文件中保存着当前在线以及下线的核心的数量。
  • present 中记录着主板上安装的CPU的编号

进一步进入cpufreq目录下,该目录下的文件记录与频率相关的内容。

对于fedora系统,无需安装其它工具。如果使用ubuntu系统时,该目录可能为空,需要手动安装cpufrequtils

cpuN(N为具体的第几个CPU)下有关于该CPU的具体参数文件。与频率有关的文件在该目录下的cpufreq文件夹下。fedora系统该文件夹下有如下信息:

  • cpuinfo_xxx 开头文件代表着cpu硬件上支持的频率
    • cpuinfo_max_freq cpuinfo_min_freq 最大、最小频率
    • cpuinfo_cur_freq 是当前运行的频率(可能也有问题,具体见后面的小节)
  • scaling_xxx开头文件代表可以通过CPUFreq系统用软件进行调节时所支持的频率
    • scaling_available_governors 可供选择的频率调节策略
    • scaling_governors 当前选择的策略
    • scaling_max_freq scaling_min_freq 调节是最大、最小频率
    • scaling_cur_freq 是软件当前指定的频率
    • scaling_driver 调频驱动 (当前intel_pstate

特别注意:可能新版的处理器,新的Linux内核中只有部分接口,且调度也只有powersave和ondemand两种,这是由于使用了p-state driver导致。如何修改见后面小节。

CPUFreq 子系统

根据以上观察,可以有如下总结:

  • CPU的硬件特性决定了这个CPU的最高和最低工作频率,所有的频率调整数值都必须在这个范围内。
  • 可以在这个范围内再次定义出一个软件的调节范围,它们用scaling_xxx_freq来表示
  • CPUFreq系统把一些公共的逻辑和接口代码抽象出来,这些代码与平台无关,也与具体的调频策略无关
  • 另外一部分,与实际的调频策略相关的部分被称作cpufreq_policy
  • cpufreq_policy又是由频率信息和具体的governor组成,governor才是具体策略的实现者
  • governor的实现最好能做到平台无关,与平台相关的代码用cpufreq_driver表述

关于CPUFreq的具体理论,主要参考参考文献1,该参考文献使用的linux内核位2.6版本,该部分以2.6版本为主。

为什么会出现变频技术

简要来说,变频技术的主要目的是节约功耗。变频技术作为电源管理技术以节能为目的加入linux内核。与之前看的大小核类似,变频技术都是为了 energy efficient computing,为了提高performance per watt

  • 4
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值