CPU interactive调频策略

本文集中于interactive调频策略

内核可选的调频策略

读取可用的调频管理策略

/sys/devices/system/cpu/cpufreq/cpu0/cpufreq/scaling_available_governors.

调频策略通常有如下:

1.Performance:CPUfreq 被设置成scaling_min_freq和scaling_max_freq中的最高频率,

2.Powersave::CPUfreq 被设置成scaling_min_freq和scaling_max_freq中的最低频率;

3.Userspace:允许root权限的用户通过sysfs的“scaling_setspeed字段将cpu频率设置成用户想要的频率。

4.Ondemand:根据当前CPU使用情况调频,该调频策略的参数位于:

/sys/devices/system/cpu/cpufreq/ondemand

  • sampling_rate:该间隔是查询CPU负载间隔,并根据CPU负载做对应的事
  • sampling_rate_min:采样间隔的最小值有硬件延迟或者内核限制
  • up_threshold:定义了根据sampling_rate间隔的cpu使用情况内核需要增加cpu频率的门限
  • ignore_nice_load:该参数的值是0或者1,如果是0,则统计cpu使用率时会统计所有cpu,如果被设置成1,则运行“nice”值的cpu将不会被统计到cpu使用率。
  • smapling_down_factor:该值控制当cpu运行在高主频时的降频行为,当设置成1(缺省值),则在调频时会重新评估cpu使用率,当设置成大于1的值(如100),在高负载时其和轮询时间间隔的乘积将作为查询负载的间隔,这用于减少cpu开销,让cpu更多的停留在较高主频。
  • interactive:其设计的目标是对低延迟的使用场景的响应。其调频策略类似“ondemand”,但是设置的参数值和“ondemand”是有区别的,主要来说就是升频率快,降频慢。

/sys/devices/system/cpu/cpufreq/interactive

  • target_loads:负载和频率的对应关系,如“85 1000000:90 1700000:99”表示:

target_loads =
85, if cur_freq < 1 GHz
90, if 1 GHz < cur_freq < 1.7 GHz
99, if cur_freq > 1.7 GHz

  • Hispeed_freq:当负载超越“go_hispeed_load”时,cpu频率将会跳到的主频,如cpu停留在高主频的时间超过above_hispeed_delay,则主频会跳到更高。
  • Go_hispeed_load:如果cpu负载超过这个值,则下一个选择的频率至少是hispeed。
  • Above_hispeed_delay:cpu主频在跳到更高一级的保持时间。
  • min_sample_time:在任一频率下降前需要在当前频率运行保持的时间。
  • sampling_rate:interative管理器的采样间隔。
  • Sampling_down_factor,该值控制cpu降频的频率,当设置成1(缺省值),则根据每个采样间隔决定,如果值大于1,作为cpu调频间隔的乘积因子。
  • Sync_Freq Feature:如果满足up_threshold_any_cpu_freq和up_threshold_any_cpu_load)两个节点指定的条件,该值将会将cpu主频放在一个特定的主频之上value sync_freq,
  • Up_threshold_any_cpu_freq:如果cpu最高频率高于或者等于该频率,则当前cpu主频不能低于sync_freq。
  • Sync_freq:只有当上述两个条件满足时,该cpu主频不会低于这个频率。

调频策略切换

当前调频策略

/sys/devices/system/cpu/cpufreq/cpu0/cpufreq/scaling_governor.

切换成ondemand策略如下:

Echo ondemand > /sys/devices/system/cpu/cpufreq/cpu0/cpufreq/scaling_governor

内核调频策略接口

调频策略调用“cpufreq_register_governor.“向调频模块注册,该函数的cpufreq_governor结构体参数必须含有如下信息:

  • governor->name,独一无二的管理这名字
  • governor->governor:回调函数
  • governor->owner::THIS_MODULE
  • CPUFREQ_GOV_START:将启用policy->cpu指定的cpu调频策略。
  • CPUFREQ_GOV_STOP:停止policy->cpu指定的cpu调频策略

cpu调频策略管理者调用如下函数

int cpufreq_driver_target(struct cpufreq_policy *policy, unsigned int target_freq, unsigned int relation);
int __cpufreq_driver_target(struct cpufreq_policy *policy, unsigned int target_freq, unsigned int relation);

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

shichaog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值