【发布时间】:2012-07-02 16:08:29
【问题描述】:
所以当一个任务用完它的时间片后,它会被重新插入到红黑树中。如果任务之前已经休眠了很长时间,导致vruntime与runqueue中的其他任务相比非常小,那么它将被重复地重新插入到红黑树的最左边,对吧?因此,它总是会被选为下一个要运行的任务?我检查了 core.c 和 fair.c 中的源代码,我没有看到该任务应该让给其他任务的任何地方。虽然在函数 pick_next_entity() 中,我确实看到了一些任务,例如 cfs_rq->next、cfs_rq->last 等。它们可能具有更高的运行优先级,但我认为这不是阻止非常小的任务的正确位置vruntime 不会占用处理器太长时间,对吗?有人有线索吗?谢谢,
【问题讨论】: