2021-05-13 06:36:38

by Jisheng Zhang

[permalink] [raw]
Subject: [PATCH] timer: Use static_branch_likely() for timers_nohz_active

NOHZ is likely to be enabled, so use static_branch_likely() to
reflect this fact. This could improve the finally generated code
a bit for the most likely scenario, I.E save two "jmp" instructions.

Signed-off-by: Jisheng Zhang <[email protected]>
---
kernel/time/timer.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/kernel/time/timer.c b/kernel/time/timer.c
index d111adf4a0cb..40d4fe7fa207 100644
--- a/kernel/time/timer.c
+++ b/kernel/time/timer.c
@@ -265,7 +265,7 @@ int timer_migration_handler(struct ctl_table *table, int write,

static inline bool is_timers_nohz_active(void)
{
- return static_branch_unlikely(&timers_nohz_active);
+ return static_branch_likely(&timers_nohz_active);
}
#else
static inline bool is_timers_nohz_active(void) { return false; }
--
2.31.0



2021-06-22 15:20:48

by Thomas Gleixner

[permalink] [raw]
Subject: Re: [PATCH] timer: Use static_branch_likely() for timers_nohz_active

On Thu, May 13 2021 at 14:33, Jisheng Zhang wrote:
> NOHZ is likely to be enabled, so use static_branch_likely() to

Why is it likely to be enabled? Did you make a survey of the wider
distro universe or what?

> reflect this fact. This could improve the finally generated code

could improve? Either it does or it does not.

Thanks,

tglx

2021-06-23 03:20:33

by Jisheng Zhang

[permalink] [raw]
Subject: Re: [PATCH] timer: Use static_branch_likely() for timers_nohz_active

Hi Thomas,

On Tue, 22 Jun 2021 17:19:20 +0200
Thomas Gleixner <[email protected]> wrote:


>
> On Thu, May 13 2021 at 14:33, Jisheng Zhang wrote:
> > NOHZ is likely to be enabled, so use static_branch_likely() to
>
> Why is it likely to be enabled? Did you make a survey of the wider
> distro universe or what?

No, I didn't make any survey. I only checked debian and ubuntu kernel
image config file, both have CONFIG_NO_HZ_COMMON=y
So IMHO, if CONFIG_NO_HZ_COMMON=y, the static key timers_nohz_active is
true in most cases.

>
> > reflect this fact. This could improve the finally generated code
>
> could improve? Either it does or it does not.

Per include/linux/jump_label.h, if the timers_nohz_active is true,
it can save two jmp instructions.


* type\branch| likely (1) | unlikely (0)
* -----------+-----------------------+------------------
* | |
* true (1) | ... | ...
* | NOP | JMP L
* | <br-stmts> | 1: ...
* | L: ... |
* | |
* | | L: <br-stmts>
* | | jmp 1b


Thanks

2021-06-23 10:45:24

by Jisheng Zhang

[permalink] [raw]
Subject: Re: [PATCH] timer: Use static_branch_likely() for timers_nohz_active

On Tue, 22 Jun 2021 17:19:20 +0200
Thomas Gleixner <[email protected]> wrote:


>
>
> On Thu, May 13 2021 at 14:33, Jisheng Zhang wrote:
> > NOHZ is likely to be enabled, so use static_branch_likely() to
>
> Why is it likely to be enabled? Did you make a survey of the wider
> distro universe or what?

One more thought: maybe NOHZ is confusing, what I mean here is:
timers_nohz_active is likely to be true.

If I update the commit msg as the following, is it acceptable?

"timers_nohz_active is likely to be true, so use static_branch_likely() to
reflect this fact. This could improve the finally generated code
a bit for the most likely scenario, I.E save two "jmp" instructions."

Thanks

>
> > reflect this fact. This could improve the finally generated code
>
> could improve? Either it does or it does not.
>
> Thanks,
>
> tglx