On 23/07/2024 13:42, Chuyi Zhou wrote:
In reweight_task(), there are two situations:
1. The task was on_rq, then the task's load_avg is accurate because we
synchronized it with cfs_rq through update_load_avg() in dequeue_task().
Just asking: That's the dequeue_task() in __sched_setscheduler() or
set_user_nice()? Maybe this is worth mentioning here?
[...]
@@ -3795,7 +3816,9 @@ static void reweight_entity(struct cfs_rq *cfs_rq, struct sched_entity *se,
if (!curr)
__dequeue_entity(cfs_rq, se);
update_load_sub(&cfs_rq->load, se->load.weight);
- }
+ } else if (entity_is_task(se))
+ sync_entity_load_avg(se);
+
IMHO, the 'if else' path needs braces. See
Documentation/process/coding-style.rst '3) Placing Braces and Spaces'.
dequeue_load_avg(cfs_rq, se);
if (se->on_rq) {
[...]
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@xxxxxxx>