CPU调度

一、proc文件解释

1. /proc/sys/kernel/sched_short_sleep_ns

调度器在任务运行短暂峰值时总是试图避免唤醒idle cpu。如果任务平均峰值小于 sysctl_sched_short_burst 纳秒,并且睡眠平均时间大于 sysctl_sched_short_sleep 纳秒,那么此任务倾向被打包。提高这个值会导致任务更频繁被打包,有利于功耗,但是会损害性能。将这个值设置为0将会disable任务打包。

2./proc/sys/kernel/sched_short_burst_ns

跟上面参数一起使用,确定任务是否适宜打包。提高这个值也会导致任务任务打包更频繁,设置为0将disable此值。

3./proc/sys/kernel/sched_group_upmigrate

这个值是个百分比。任务需求相对cpu能力的百分比,如果这个任务组的总需求超过这个cpu,那么这个cpu对这个任务组来说太小。调度器将尝试找到一个更强劲的cpu来处理此任务组。提高这个值将会阻止任务往大核迁移,有利于功耗,不利于性能。换句话时候就是上大核的阈值。

4./proc/sys/kernel/sched_group_downmigrate

同上,也是个百分比,如果任务组已经迁移到大核,并且任务组总需求cpu将会降到 sched_group_downmigrate 以下,此时调度器将会找到一个最佳能耗的cpu来完成任务组执行;降低此值将会阻止任务迁移到小核上,对性能有利。就是从大核下下来的阈值。

5. /proc/sys/kernel/sched_freq_aggregate

一个标志,用来控制调度器是否应该将相关线程组的总的cpu忙时间报告给Governor用来设置cpu频率,关闭此功能有利于降低功耗。

6./proc/sys/kernel/sched_freq_aggregate_threshold

时间阈值(ms),这个是cpu忙时间,当总的任务组的忙时间超过这个值时,调度器才会进行频率聚合。

参考: https://www.geek-share.com/detail/2713433601.html

原文地址:https://www.cnblogs.com/hellokitty2/p/13043615.html