[PATCH v5 3/4] sched, psi: Don't account irq time if sched_clock_irqtime is disabled

Yafang Shao posted 4 patches 1 year, 3 months ago
There is a newer version of this series
[PATCH v5 3/4] sched, psi: Don't account irq time if sched_clock_irqtime is disabled
Posted by Yafang Shao 1 year, 3 months ago
sched_clock_irqtime may be disabled due to the clock source. When disabled,
irq_time_read() won't change over time, so there is nothing to account. We
can save iterating the whole hierarchy on every tick and context switch.

Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
Acked-by: Johannes Weiner <hannes@cmpxchg.org>
---
 kernel/sched/psi.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/sched/psi.c b/kernel/sched/psi.c
index 84dad1511d1e..210aec717dc7 100644
--- a/kernel/sched/psi.c
+++ b/kernel/sched/psi.c
@@ -998,7 +998,7 @@ void psi_account_irqtime(struct rq *rq, struct task_struct *curr, struct task_st
 	s64 delta;
 	u64 irq;
 
-	if (static_branch_likely(&psi_disabled))
+	if (static_branch_likely(&psi_disabled) || !irqtime_enabled())
 		return;
 
 	if (!curr->pid)
-- 
2.43.5
Re: [PATCH v5 3/4] sched, psi: Don't account irq time if sched_clock_irqtime is disabled
Posted by Michal Koutný 1 year, 2 months ago
On Fri, Nov 08, 2024 at 09:29:03PM GMT, Yafang Shao <laoar.shao@gmail.com> wrote:
> sched_clock_irqtime may be disabled due to the clock source. When disabled,
> irq_time_read() won't change over time, so there is nothing to account. We
> can save iterating the whole hierarchy on every tick and context switch.
> 
> Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> Acked-by: Johannes Weiner <hannes@cmpxchg.org>
> ---
>  kernel/sched/psi.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Michal Koutný <mkoutny@suse.com>
Re: [PATCH v5 3/4] sched, psi: Don't account irq time if sched_clock_irqtime is disabled
Posted by Michal Koutný 1 year, 2 months ago
On Tue, Dec 03, 2024 at 11:01:41AM GMT, Michal Koutný <mkoutny@suse.com> wrote:
> On Fri, Nov 08, 2024 at 09:29:03PM GMT, Yafang Shao <laoar.shao@gmail.com> wrote:
> > sched_clock_irqtime may be disabled due to the clock source. When disabled,
> > irq_time_read() won't change over time, so there is nothing to account. We
> > can save iterating the whole hierarchy on every tick and context switch.
> > 
> > Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> > Acked-by: Johannes Weiner <hannes@cmpxchg.org>
> > ---
> >  kernel/sched/psi.c | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> Reviewed-by: Michal Koutný <mkoutny@suse.com>

On second thought, similar guard may be useful in psi_show() too. Since
there's a difference between zero pressure and unmeasured pressure (it'd
fail with EOPNOTSUPP).

(How common is it actually that tsc_init fails?)

Michal
Re: [PATCH v5 3/4] sched, psi: Don't account irq time if sched_clock_irqtime is disabled
Posted by Yafang Shao 1 year, 2 months ago
On Tue, Dec 3, 2024 at 6:15 PM Michal Koutný <mkoutny@suse.com> wrote:
>
> On Tue, Dec 03, 2024 at 11:01:41AM GMT, Michal Koutný <mkoutny@suse.com> wrote:
> > On Fri, Nov 08, 2024 at 09:29:03PM GMT, Yafang Shao <laoar.shao@gmail.com> wrote:
> > > sched_clock_irqtime may be disabled due to the clock source. When disabled,
> > > irq_time_read() won't change over time, so there is nothing to account. We
> > > can save iterating the whole hierarchy on every tick and context switch.
> > >
> > > Signed-off-by: Yafang Shao <laoar.shao@gmail.com>
> > > Acked-by: Johannes Weiner <hannes@cmpxchg.org>
> > > ---
> > >  kernel/sched/psi.c | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > Reviewed-by: Michal Koutný <mkoutny@suse.com>
>
> On second thought, similar guard may be useful in psi_show() too. Since
> there's a difference between zero pressure and unmeasured pressure (it'd
> fail with EOPNOTSUPP).

I'll update the psi_show() function in the next version.

>
> (How common is it actually that tsc_init fails?)

This is not a common scenario, but it can occur randomly across a large fleet.

--
Regards
Yafang