'Why doesn't the Linux real-time scheduler remove the task from the queue for group scheduling?
static void dequeue_rt_entity(struct sched_rt_entity *rt_se, unsigned int flags)
{
struct rq *rq = rq_of_rt_se(rt_se);
update_stats_dequeue_rt(rt_rq_of_se(rt_se), rt_se, flags);
dequeue_rt_stack(rt_se, flags);
for_each_sched_rt_entity(rt_se) {
struct rt_rq *rt_rq = group_rt_rq(rt_se);
if (rt_rq && rt_rq->rt_nr_running)
__enqueue_rt_entity(rt_se, flags);
}
enqueue_top_rt_rq(&rq->rt);
}
why need call (__enqueue_rt)entity(rt_se, flags) for group-scheduled?
My understanding is that for a group-scheduled process, after the time on the current cpu runs out, there may be time on other cpus, so it will continue to be placed on the queue to wait for the next scheduling, but I don't know if this understanding is correct
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
