Re: [RFC v5 2/9] sched/deadline: improve the tracking of active utilization

From: Luca Abeni
Date: Tue Jul 25 2017 - 02:41:24 EST


On Mon, 24 Jul 2017 11:04:52 +0200
Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:

> On Mon, Jul 24, 2017 at 10:06:09AM +0200, Luca Abeni wrote:
> > > Yes, grouping all the flags in a single field was my intention too... I
> > > planned to submit a patch to do this after merging the reclaiming
> > > patches... But maybe it is better to do this first :)
> >
> > I implemented this change, but before submitting the patch I have a
> > small question.
> > I implemented some helpers to access the various
> > {throttled,boosted,yielded,non_contending} flags. I have some
> > "dl_{throttled,boosted,...}()" inline functions for reading the values
> > of the flags, and some inline functions for setting / clearing the
> > flags. For these, I have two possibilities:
>
> > - using two separate "dl_set_{throttled,...}()" and
> > "dl_clear_{throttled,..}()" functions for each flag
>
> > - using one single "dl_set_{throttled,...}(dl, value)" function per
> > flag, in which the flag's value is specified.
> >
> > I have no preferences (with the first proposal, I introduce more inline
> > functions, but I think the functions can be made more efficient /
> > optimized). Which one of the two proposals is preferred? (or, there is
> > a third, better, idea that I overlooked?)
>
> - Use bitfields and let the compiler sort it out.
>
> - Use macros to generate all the inlines as per the first.
>
>
> Personally, because I'm lazy, I'd try the bitfield thing first and see
> what kind code that generates. If that's not too horrendous, keep it :-)

Thanks for the suggestions; I'll test the C bitfields and I'll see how
the assembly generated by gcc compares with the inline functions (I did
not propose this idea originally because I got the impression that
people tend not to trust gcc)


Thanks,
Luca