2021-05-28 14:00:07

by Tor Vic

[permalink] [raw]
Subject: [Question] mm/vmpressure.c: ilog2 calculation in constant

Hello,

in mm/vmpressure.c, we have defined this constant:

static const unsigned int vmpressure_level_critical_prio = ilog2(100 / 10);

My question is: Why do we calculate ilog2 instead of simply setting the constant to '3'?
Then, I guess, we could also get rid of the log2.h include.
Note that this is just a question, not a request, as I'm sure there is a reason for this.
(given the help text in the comment just above)

Greetings,
Tor Vic


2021-05-28 14:13:12

by David Hildenbrand

[permalink] [raw]
Subject: Re: [Question] mm/vmpressure.c: ilog2 calculation in constant

On 28.05.21 14:08, [email protected] wrote:
> Hello,
>
> in mm/vmpressure.c, we have defined this constant:
>
> static const unsigned int vmpressure_level_critical_prio = ilog2(100 / 10);
>
> My question is: Why do we calculate ilog2 instead of simply setting the constant to '3'?

My best guess is that it's in place to a) increase readability b) make
it easier to adjust. The compiler will optimize it out either way, so we
don't really care.

Having that said: it doesn't increase readability on my end. But I only
took a quick glimpse. Maybe the "100 / 10 == 10" here is the magic bit
also mentioned in the comment "when scanning depth is ~10%". So it can
be adjusted "more easily" eventually ... at least not by me.

--
Thanks,

David / dhildenb