2014-08-29 57 views
6

线程(或任务)将通过使用大量的cpu来损失动态优先级,并通过使用更少的CPU来获得优先级。这些优先级究竟是如何为n个线程计算的(使用正常调度策略SCHED_OTHER)?Linux 2.6.x中计算的线程动态优先级如何?

+4

完全公平调度程序(CFS),又名SCHED_NORMAL或SCHED_OTHER,记录在这里[https://github.com/torvalds/linux/blob/master/Documentation/ scheduler/sched-design-CFS.txt)并在[here](https://github.com/torvalds/linux/blob/master/kernel/sched/fair.c)中实现。 – indiv 2014-08-30 01:04:34

回答

1

this

引述的Linux 2.6.8.1调度奖励I/O密集型任务,并通过添加或从一个任务的静态 优先减去惩罚 CPU密集型任务。调整后的优先级称为任务的动态优先级, ,可通过任务的prio变量(例如,p-> prio,其中p 是任务)访问。如果某个任务是交互式的(调度程序的用于绑定I/O 的术语),则会提高其优先级。如果它是一个CPU猪,它会得到一个 罚款。在Linux 2.6.8.1调度程序中,最大优先级奖励为 5,最大优先级惩罚为5.由于调度程序使用 奖金和罚金,因此对任务的静态优先级的调整值为 。一个温和的具有-2的好CPU值的CPU可能具有0的动态优先级,这与既不是CPU也不是I/O 猪的任务相同。

我觉得这是一个公平的解释。根据它是CPU绑定线程还是I/O绑定线程来计算优先级。关于你在问题中提到的内容,gain priority by using less of CPU通过互动(I/O绑定)而变得更加重要。我希望这个摘录回答您的查询...