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!