Skip to content

Commit

Permalink
sched/eevdf: Also update slice on placement
Browse files Browse the repository at this point in the history
Tasks that never consume their full slice would not update their slice value.
This means that tasks that are spawned before the sysctl scaling keep their
original (UP) slice length.

Fixes: 147f3ef ("sched/fair: Implement an EEVDF-like scheduling policy")
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Link: https://lkml.kernel.org/r/20230915124822.847197830@noisy.programming.kicks-ass.net
  • Loading branch information
Peter Zijlstra committed Oct 3, 2023
1 parent 8a749fd commit 2f2fc17
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions kernel/sched/fair.c
Original file line number Diff line number Diff line change
Expand Up @@ -4919,10 +4919,12 @@ static inline void update_misfit_status(struct task_struct *p, struct rq *rq) {}
static void
place_entity(struct cfs_rq *cfs_rq, struct sched_entity *se, int flags)
{
u64 vslice = calc_delta_fair(se->slice, se);
u64 vruntime = avg_vruntime(cfs_rq);
u64 vslice, vruntime = avg_vruntime(cfs_rq);
s64 lag = 0;

se->slice = sysctl_sched_base_slice;
vslice = calc_delta_fair(se->slice, se);

/*
* Due to how V is constructed as the weighted average of entities,
* adding tasks with positive lag, or removing tasks with negative lag
Expand Down

0 comments on commit 2f2fc17

Please sign in to comment.