Re: [PATCH 1/4] sched/eevdf: Fix vruntime adjustment on reweight
From: Tianchen Ding
Date: Thu Feb 29 2024 - 04:25:37 EST
Hi Abel:
I'm not so familiar with eevdf and still learning. Here I've some questions
about this patch.
1. You did proof that V will not change during reweight (COROLLARY #2). However,
according to the original paper, the new V will be:
V' = V + lag(j)/(W - w_j) - lag(j)/(W - w_j + w'_j)
So the V' in paper will change (when lag is not zero).
Is the V in Linux code slightly different from the paper?
2. I print some log around reweight_entity(), mainly want to print V by calling
avg_vruntime(cfs_rq). I found your algorithm only keeps the V unchanged during
reweight_eevdf(), but not reweight_entity().
In detail:
If curr is true (i.e., cfs_rq->curr == se), we will directly run
reweight_eevdf(), and the V is not changed.
If curr is false, we will have __dequeue_entity() -> reweight_eevdf() ->
__enqueue_entity(). The V is finally changed due to dequeue and enqueue. So the
result of reweight_entity() will be impacted by "cfs_rq->curr == se", is this
expected?
Thanks!