[PATCH v6 0/2] sched: update the rq->avg_idle when a task is moved to an idle CPU

Huang Shijie posted 2 patches 1 week ago
kernel/sched/core.c | 29 +++++++++++++++++------------
kernel/sched/fair.c | 10 ++++++----
2 files changed, 23 insertions(+), 16 deletions(-)
[PATCH v6 0/2] sched: update the rq->avg_idle when a task is moved to an idle CPU
Posted by Huang Shijie 1 week ago
In the newidle balance, the rq->idle_stamp may set to a non-zero value
if it cannot pull any task.

In the wakeup, it will detect the rq->idle_stamp, and updates
the rq->avg_idle, then ends the CPU idle status by setting rq->idle_stamp
to zero.

Besides the wakeup, current code does not end the CPU idle status
when a task is moved to the idle CPU, such as fork/clone, execve,
or other cases.

This patch set tries to resolve it.

Tested this patch set with Specjbb:
   There is no regression for this patch set

v5--> v6:
    Remove "this_rq->idle_stamp = 0;" in patch 1.
    Update the test result with Specjbb.
   --v5:https://lkml.org/lkml/2025/12/3/179

v4--> v5:
    Modify the changelog.

   --v4:https://lkml.org/lkml/2025/11/28/300

v3--> v4:
     Remove the code for delayed task.

   --v3: https://lkml.org/lkml/2025/11/27/456

v2--> v3:
  -- merge patch 3 into patch 2:
      move update_rq_avg_idle() to enqueue_task().

   --v2: https://lkml.org/lkml/2025/11/27/214   

v1--> v2:
  -- Put update_rq_avg_idle() to activate_task()
  -- Add Delay-dequeue task check.	

   --v1: https://lkml.org/lkml/2025/11/24/97

Huang Shijie (2):
  sched/fair: set rq->idle_stamp at the end of the sched_balance_newidle
  sched: update the rq->avg_idle when a task is moved to an idle CPU

 kernel/sched/core.c | 29 +++++++++++++++++------------
 kernel/sched/fair.c | 10 ++++++----
 2 files changed, 23 insertions(+), 16 deletions(-)

-- 
2.40.1