Re: [RESEND][PATCH v3 1/1] sched: Report the different kinds of imbalances in /proc/schedstat
From: Chen Yu
Date: Tue May 14 2024 - 07:33:53 EST
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?
thanks,
Chenyu