On 23-01-17, 16:51, Viresh Kumar wrote:
Hi Guys,
All of this work was done by Steve before he left. I have made very minor changes, merged few patches, rebased over 4.10-rc5.
More details can be found here:
https://projects.linaro.org/browse/PMWG-1018
With Android UI and benchmarks the latency of cpufreq response to certain scheduling events can become very critical. Currently on mainline tip, callbacks into schedutil are only made from the scheduler if the target CPU of the event is the same as the current CPU. This means there are certain situations where a target CPU may not run schedutil for some time.
One testcase to show this behavior is where a task starts running on CPU0, then a new task is also spawned on CPU0 by a task on CPU1. If the system is configured such that new tasks should receive maximum demand initially, this should result in CPU0 increasing frequency immediately. Because of the above mentioned limitation though this does not occur.
This patchset defers the callback into schedutil if the callback would be remote (not for a CPU in the policy of which we are running). If there is no preemption required by the wakeup a late callback into schedutil is made, and schedutil is modified to be able to correctly deal with remote callbacks. If preemption does occur then the scheduler, and schedutil, will run on the remote CPU anyway.
I would be doing further testing on this to get more performance numbers with it, just wanted to get some early responses and so sending it to the EAS list.
FWIW, Steve provided me a .c file to test this stuff and I have written a short script to get traces along with that. Just in case it is helpful for any of you.
I tested it on Odoroid XU3 (big LITTLE) and remote wakeup is working for me as well.
-- viresh