Please ignore this mail. I have resent this post using the correct version number. Sorry for the noise.
On 06/30/2016 07:57 PM, Shreyas B. Prabhu wrote: > Snooze is a poll idle state in powernv and pseries platforms. Snooze > has a timeout so that if a cpu stays in snooze for more than target > residency of the next available idle state, then it would exit thereby > giving chance to the cpuidle governor to re-evaluate and > promote the cpu to a deeper idle state. Therefore whenever snooze exits > due to this timeout, its last_residency will be target_residency of next > deeper state. > > commit e93e59ce5b85 ("cpuidle: Replace ktime_get() with local_clock()") > changed the math around last_residency calculation. Specifically, while > converting last_residency value from nanoseconds to microseconds it does > right shift by 10. Due to this, in snooze timeout exit scenarios > last_residency calculated is roughly 2.3% less than target_residency of > next available state. This pattern is picked up get_typical_interval() > in the menu governor and therefore expected_interval in menu_select() is > frequently less than the target_residency of any state but snooze. > > Due to this we are entering snooze at a higher rate, thereby affecting > the single thread performance. > > Fix this by using a better approximation for division by 1000. > > Reported-by: Anton Blanchard <an...@samba.org> > Bisected-by: Shilpasri G Bhat <shilpa.b...@linux.vnet.ibm.com> > Suggested-by David Laight <david.lai...@aculab.com> > Signed-off-by: Shreyas B. Prabhu <shre...@linux.vnet.ibm.com> > --- > Changes in v4 > ============= > - Increasing the threshold upto which approximation can be used. > - Removed explicit cast. Instead added a comment saying why cast > is safe. > > Changes in v3 > ============= > - Using approximation suggested by David > > Changes in v2 > ============= > - Fixing it in the cpuidle core code instead of driver code. > _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev