Re: [RESEND][PATCH v3 1/1] sched: Report the different kinds of imbalances in /proc/schedstat

From: Shrikanth Hegde
Date: Tue May 14 2024 - 10:24:48 EST




On 5/14/24 4:44 PM, Chen Yu wrote:
> On 2024-05-14 at 04:44:45 +0000, Swapnil Sapkal wrote:
>> In /proc/schedstat, lb_imbalance reports the sum of imbalances
>> discovered in sched domains with each call to sched_balance_rq(), which is
>> not very useful because lb_imbalance does not mention whether the imbalance
>> is due to load, utilization, nr_tasks or misfit_tasks. Remove this field
>> from /proc/schedstat.
>>
>> Currently there is no field in /proc/schedstat to report different types
>> of imbalances. Introduce new fields in /proc/schedstat to report the
>> total imbalances in load, utilization, nr_tasks or misfit_tasks.
>>
>> Added fields to /proc/schedstat:
>> - lb_imbalance_load: Total imbalance due to load.
>> - lb_imbalance_util: Total imbalance due to utilization.
>> - lb_imbalance_task: Total imbalance due to number of tasks.
>> - lb_imbalance_misfit: Total imbalance due to misfit tasks.
>>
>> Reviewed-by: Shrikanth Hegde <sshegde@xxxxxxxxxxxxx>
>> Signed-off-by: Swapnil Sapkal <swapnil.sapkal@xxxxxxx>
>> ---
>> Documentation/scheduler/sched-stats.rst | 121 ++++++++++++++----------
>> include/linux/sched/topology.h | 5 +-
>> kernel/sched/fair.c | 21 +++-
>> kernel/sched/stats.c | 7 +-
>> 4 files changed, 99 insertions(+), 55 deletions(-)
>
> [...]
>
>> diff --git a/kernel/sched/stats.c b/kernel/sched/stats.c
>> index 78e48f5426ee..a02bc9db2f1c 100644
>> --- a/kernel/sched/stats.c
>> +++ b/kernel/sched/stats.c
>> @@ -151,11 +151,14 @@ static int show_schedstat(struct seq_file *seq, void *v)
>> seq_printf(seq, "domain%d %*pb", dcount++,
>> cpumask_pr_args(sched_domain_span(sd)));
>> for (itype = 0; itype < CPU_MAX_IDLE_TYPES; itype++) {
>> - seq_printf(seq, " %u %u %u %u %u %u %u %u",
>> + seq_printf(seq, " %u %u %u %u %u %u %u %u %u %u %u",
>> sd->lb_count[itype],
>> sd->lb_balanced[itype],
>> sd->lb_failed[itype],
>> - sd->lb_imbalance[itype],
>> + sd->lb_imbalance_load[itype],
>> + sd->lb_imbalance_util[itype],
>> + sd->lb_imbalance_task[itype],
>> + sd->lb_imbalance_misfit[itype],
>> sd->lb_gained[itype],
>> sd->lb_hot_gained[itype],
>> sd->lb_nobusyq[itype],
>
> Do we need to increase SCHEDSTAT_VERSION to 16?

It's been increased already as part of below commit

commit 11b0bfa5d463b17cac5bf6b94fea4921713530c3
Author: Ingo Molnar <mingo@xxxxxxxxxx>
Date: Fri Mar 8 11:58:55 2024 +0100

sched/debug: Increase SCHEDSTAT_VERSION to 16

We changed the order of definitions within 'enum cpu_idle_type',
which changed the order of [CPU_MAX_IDLE_TYPES] columns in
show_schedstat().


>
> thanks,
> Chenyu