On Mon, Jul 4, 2016 at 8:10 AM, Balbir Singh <bsinghar...@gmail.com> wrote: > > > On 02/07/16 00:24, 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 precise division via ktime_us_delta. >> >> Reported-by: Anton Blanchard <an...@samba.org> >> Bisected-by: Shilpasri G Bhat <shilpa.b...@linux.vnet.ibm.com> >> Signed-off-by: Shreyas B. Prabhu <shre...@linux.vnet.ibm.com> >> --- > > This looks so much cleaner :) > > Acked-by: Balbir Singh <bsinghar...@gmail.com>
Patch applied, thanks! _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev