Messages in this thread Patch in this message | | | Date | Tue, 29 Aug 2023 13:28:00 +0200 | From | Frederic Weisbecker <> | Subject | Re: [PATCH 00/10] timers/cpuidle: Fixes and cleanups |
| |
On Tue, Aug 15, 2023 at 06:10:43PM +0200, Peter Zijlstra wrote: > On Fri, Aug 11, 2023 at 07:00:39PM +0200, Frederic Weisbecker wrote: > > Hi, > > > > The first part of the series is cpuidle callback fixes against timers, > > some of which haven't been Signed by Peter yet. > > > > Another part is removing the overhead of useless TIF_NR_POLLING clearing. > > So I've again forgotten why we don't simply set TIF_NEED_RESCHED if we > need the timer re-programmed. That is by far the simplest fix. > > I'm sure we talked about it, but this was a long time ago and I can't > remember :/
I don't think we did but the rationale is that with forcing setting TIF_NEED_RESCHED, you force a needless timer restart (which is then going to be cancelled shortly after) and a round trip to the scheduler with the rq lock overhead, etc...
Just for the fun I just tried the following change:
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index c52c2eba7c73..ec43d135cf65 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -1132,8 +1132,10 @@ static void wake_up_idle_cpu(int cpu) { struct rq *rq = cpu_rq(cpu); - if (cpu == smp_processor_id()) + if (cpu == smp_processor_id()) { + set_tsk_need_resched(current); return; + } if (set_nr_and_not_polling(rq->idle)) smp_send_reschedule(cpu);
Then I computed the average of 100 runs of "make clean -C tools/perf; make -C tools/perf/" before and after this patch.
I observed an average regression of 1.27% less time spent in C-states.
So this has a measurable impact.
> > Anyway, the patches look good, except I think there's a whole bunch of > architectures that still need fixing. In particular since loongson > 'borrowed' the whole lot from MIPS, they need an identical fix. But I'm > sure there's more architectures affected.
MIPS at least yes, I only did a quick check and it seems that most archs use a "wfi" like instruction. I'll check for others.
Thanks.
| |