Re: [PATCH 1/3] cpuidle: powernv: Don't bounce between low and very low thread priority
* Nicholas Piggin [2017-04-04 09:52:07]: > On Tue, 4 Apr 2017 07:54:12 +1000 > Anton Blanchard wrote: > > > From: Anton Blanchard > > > > The core of snooze_loop() continually bounces between low and very > > low thread priority. Changing thread priorities is an expensive > > operation that can negatively impact other threads on a core. > > > > All CPUs that can run PowerNV support very low priority, so we can > > avoid the change completely. > > This looks good. I have HMT_lowest() which does alt feature patching > we can use for pseries and default idle code. Alternatively, if we are going to set priority only once in various other places, HMT_low(); HMT_very_low(); should not add to extra cycles. Let me code that up. --Vaidy
Re: [PATCH 1/3] cpuidle: powernv: Don't bounce between low and very low thread priority
* Anton Blanchard [2017-04-04 07:54:12]: > From: Anton Blanchard > > The core of snooze_loop() continually bounces between low and very > low thread priority. Changing thread priorities is an expensive > operation that can negatively impact other threads on a core. > > All CPUs that can run PowerNV support very low priority, so we can > avoid the change completely. > > Signed-off-by: Anton Blanchard Reviewed-by: Vaidyanathan Srinivasan > --- > drivers/cpuidle/cpuidle-powernv.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/cpuidle/cpuidle-powernv.c > b/drivers/cpuidle/cpuidle-powernv.c > index cda8f62d555b..9d9f164894eb 100644 > --- a/drivers/cpuidle/cpuidle-powernv.c > +++ b/drivers/cpuidle/cpuidle-powernv.c > @@ -57,7 +57,6 @@ static int snooze_loop(struct cpuidle_device *dev, > snooze_exit_time = get_tb() + snooze_timeout; > ppc64_runlatch_off(); > while (!need_resched()) { > - HMT_low(); > HMT_very_low(); > if (snooze_timeout_en && get_tb() > snooze_exit_time) > break; HMT_low() is legacy and can be removed for powernv platforms. --Vaidy
Re: [PATCH 1/3] cpuidle: powernv: Don't bounce between low and very low thread priority
On Tue, 4 Apr 2017 07:54:12 +1000 Anton Blanchard wrote: > From: Anton Blanchard > > The core of snooze_loop() continually bounces between low and very > low thread priority. Changing thread priorities is an expensive > operation that can negatively impact other threads on a core. > > All CPUs that can run PowerNV support very low priority, so we can > avoid the change completely. This looks good. I have HMT_lowest() which does alt feature patching we can use for pseries and default idle code.
[PATCH 1/3] cpuidle: powernv: Don't bounce between low and very low thread priority
From: Anton Blanchard The core of snooze_loop() continually bounces between low and very low thread priority. Changing thread priorities is an expensive operation that can negatively impact other threads on a core. All CPUs that can run PowerNV support very low priority, so we can avoid the change completely. Signed-off-by: Anton Blanchard --- drivers/cpuidle/cpuidle-powernv.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/cpuidle/cpuidle-powernv.c b/drivers/cpuidle/cpuidle-powernv.c index cda8f62d555b..9d9f164894eb 100644 --- a/drivers/cpuidle/cpuidle-powernv.c +++ b/drivers/cpuidle/cpuidle-powernv.c @@ -57,7 +57,6 @@ static int snooze_loop(struct cpuidle_device *dev, snooze_exit_time = get_tb() + snooze_timeout; ppc64_runlatch_off(); while (!need_resched()) { - HMT_low(); HMT_very_low(); if (snooze_timeout_en && get_tb() > snooze_exit_time) break; -- 2.11.0