cpufreq核心层
2015-09-21 13:47:36 1 举报
CPUfreq是Linux内核中的一个模块,用于控制CPU的运行频率。它的核心层主要负责处理与CPU频率相关的任务,包括读取硬件提供的频率信息、设置CPU的工作频率以及监控系统负载等。通过调整CPU的工作频率,可以有效地降低功耗、提高性能并延长电池寿命。 在Linux系统中,用户可以通过命令行工具或者图形界面来调整CPUfreq的参数。例如,可以使用“cpufreq-set”命令来手动设置CPU的工作频率,或者使用“cpufreq-utils”软件包中的GUI工具来进行更详细的配置。此外,许多发行版还提供了对CPUfreq的支持和优化,以满足不同用户的需求。
作者其他创作
大纲/内容
用来放置当前governor的一些配置参数
cpufreq_register_governor
cpufreq_core_init
cpu_dev_init
list_add
cpufreq_governor_list
/sys/bus下也会出现一个cpu的总线节点。cpu总线设备的根目录下会依次出现cpu0,cpu1,...... cpux节点,每个cpu对应其中的一个设备节点
cpu_dev_register_generic
__find_governor=NULL
subsys_system_register
cpufreq_policy_cpu
是一个per_cpu变量,在smp的系统下,每个cpu可以有自己独立的调频policy
cpu_subsys来获取系统中的cpu设备,并在这些cpu设备下面建立相应的cpufreq对象
/sys/bus/cpu
/sys/devices/system/cpu
系统中可以同时存在多个governor策略,一个policy通过cpufreq_policy结构中的governor指针和某个governor相关联Linux内部共有五种对频率的管理策略userspace,conservative,ondemand,powersave 和 performanceØ 1.performance :CPU会固定工作在其支持的最高运行频率上;Ø 2.powersave :CPU会固定工作在其支持的最低运行频率上。因此这两种 governors 都属于静态 governor ,即在使用它们时 CPU 的运行频率不会根据系统运行时负载的变化动态作出调整。这两种 governors 对应的是两种极端的应用场景,使用 performance governor 体现的是对系统高性能的最大追求,而使用 powersave governor 则是对系统低功耗的最大追求。Ø 3.Userspace:最早的 cpufreq 子系统通过 userspace governor 为用户提供了这种灵活性。系统将变频策略的决策权交给了用户态应用程序,并提供了相应的接口供用户态应用程序调节 CPU 运行频率使用。 (可以使用Dominik 等人开发了cpufrequtils 工具包 )Ø 4.ondemand :userspace是内核态的检测,效率低。而ondemand正是人们长期以来希望看到的一个完全在内核态下工作并且能够以更加细粒度的时间间隔对系统负载情况进行采样分析的 governor。Ø 5.conservative : ondemand governor 的最初实现是在可选的频率范围内调低至下一个可用频率。这种降频策略的主导思想是尽量减小对系统性能的负面影响,从而不会使得系统性能在短时间内迅速降低以影响用户体验。但是在 ondemand governor 的这种最初实现版本在社区发布后,大量用户的使用结果表明这种担心实际上是多余的, ondemand governor在降频时对于目标频率的选择完全可以更加激进。因此最新的 ondemand governor 在降频时会在所有可选频率中一次性选择出可以保证 CPU 工作在 80% 以上负荷的频率,当然如果没有任何一个可选频率满足要求的话则会选择 CPU 支持的最低运行频率。大量用户的测试结果表明这种新的算法可以在不影响系统性能的前提下做到更高效的节能。在算法改进后, ondemand governor 的名字并没有改变,而 ondemand governor 最初的实现也保存了下来,并且由于其算法的保守性而得名 conservative 。
0 条评论
下一页