gpt4 book ai didi

linux - linux CFS 调度程序如何防止具有非常小的 vruntime 的任务使处理器挨饿?

转载 作者:IT王子 更新时间:2023-10-29 01:24:11 24 4
gpt4 key购买 nike

所以当一个任务吃完它的时间片后,它会被重新插入到红黑树中。如果任务之前已经休眠了很长时间,导致 vruntime 与运行队列中的其他任务相比非常小,那么它会作为红黑树中最左边的节点重复插入,对吧?因此它总是会被选为下一个要运行的任务?我已经检查了 core.c 和 fair.c 中的源代码,我没有看到这个任务应该屈服于其他任务的任何地方。尽管在函数 pick_next_entity() 中,我确实看到了一些任务,例如 cfs_rq->next、cfs_rq->last 等。它们可能具有更高的运行优先级,但我认为这不是阻止非常小的任务的正确位置vruntime 占用处理器时间过长,对吗?有人有线索吗?谢谢,

最佳答案

我找到了答案。当任务从运行队列中出队时,会调用:se->vruntime -= cfs_rq->min_vruntime当任务再次入队到运行队列时,这将被调用:se->vruntime += cfs_rq->min_vruntime所以实际上在任务休眠时只会存储vruntime的偏移量,当它醒来时会再次添加偏移量。

关于linux - linux CFS 调度程序如何防止具有非常小的 vruntime 的任务使处理器挨饿?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11297285/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com