我很困惑,因为sched-design-CFS.txt清楚地指出:
CFS使用纳秒粒度核算,不依赖于任何jiffies或其他HZ细节。因此,CFS调度程序不像以前的调度程序那样有“时间间隔”的概念,也没有任何启发式。只有一个中心可调(您必须打开CONFIG_SCHED_DEBUG):/proc/sys/核/sched_min_ workloads,它可用于将调度程序从“桌面”(即低延迟)调到“服务器”(即良好批处理)工作负载。
但是,多个任务调度程序调优指南提出了两个计算“时间间隔”的不同公式。(取决于可运行任务的数量。)例如,这个OpenSUSE指南。
我只在孤立的CPU上运行SCHED_FIFO线程。
发布于 2018-06-27 12:19:16
CFS没有“以前调度程序的方式”的时间间隔。
在CFS中,时间间隔基本上是连续交换机之间的持续时间,以将CPU执行时间分配给同一个线程。这给了你两个选择:
min_granularity_ns中执行至少一个latency_ns。然后,你的timeslice = scheduling period * (task's weight/total weight of tasks in the run queue)latency_ns中有太多的线程无法容纳,所以您的时间变得更大,以便容纳更多希望按照timeslice = number_of_running_tasks * sched_min_granularity_ns运行的线程。这就是为什么CFS代表一个完全公平的调度程序,因为它并不排除优先级较低的线程,而是不加区别地为每个人扩展时间。
https://unix.stackexchange.com/questions/452172
复制相似问题