Re: [PATCH 3/3] sched: Optimize !CONFIG_NO_HZ_COMMON cpu load updates

From: Peter Zijlstra
Date: Tue Apr 12 2016 - 10:23:52 EST


On Mon, Apr 11, 2016 at 08:21:31PM +0200, Frederic Weisbecker wrote:
> On Mon, Apr 11, 2016 at 10:53:01AM -0400, Chris Metcalf wrote:
> > On 4/11/2016 9:18 AM, Frederic Weisbecker wrote:
> > >So I tried and it warns about the unused variable tickless_load, so I
> > >would need two scattered ifdeffery in the function:
> > >
> > >@@ -4528,7 +4529,9 @@ decay_load_missed(unsigned long load, unsigned long missed_updates, int idx)
> > > static void cpu_load_update(struct rq *this_rq, unsigned long this_load,
> > > unsigned long pending_updates)
> > > {
> > >+#ifdef CONFIG_NO_HZ_COMMON
> > > unsigned long tickless_load = this_rq->cpu_load[0];
> > >+#endif
> >
> > Just move the initialization down to the first use, as a regular
> > assignment, and add __maybe_unused to the declaration, and the compiler
> > will then keep quiet (see Documentation/CodingStyle).
> >
> > I have no comment on which of the approaches looks better overall,
> > but I think using __maybe_unused definitely improves this approach.
>
> I thought about it yeah. I usually avoid __maybe_unused because it's often
> a bad sign concerning the code layout.
>
> Now in this precise case I wouldn't mind though. Peter what's your opinion?

Sure, go with __maybe_unused.