On 10/11/2016 05:43 PM, Leo Yan wrote:
Hi Patrick,
On Tue, Oct 11, 2016 at 05:36:46PM +0100, Patrick Bellasi wrote:
[...]
Actually, task_fits_max checks for the task fitting the _maximum_ capacity available in the system, which is tracked at root SD level. Thus, it normally checks if a task fits the 1024 (minus margin) capacity.
AFAIKS, the main difference between cpu_overutilized and misfit_task is that this last (only) considers the "boosted" task utilization.
Thus, while a small boosted task does not mark a CPU as overutilized, the same task can still be marked as a misfitting one.
I'm referring to this last point of my previous comment.
Boosted utilization does not mark a CPU overutilized, thus we should use task_misfits as well to move these tasks.
What about:
if (energy_aware) return (cpu_overutilized(cpu) || rq->misfit_task); else if (rq->nr_running >=2) return true;
I ran into same problem while I was testing upmigration latency with single CPU bound task. Above fix suggested by Patrick combined with 'sched/fair: replace capacity_of by capacity_orig_of' by Leo fixed my problem and reduced upmigration latency from ~1sec to ~250ms. ~250ms is still huge but CPU became overutilized after ~210ms of long ramp up time in my setup so it's separate problem.
So please feel free to
Tested-by: Joonwoo Park joonwoop@codeaurora.org
Thanks! Joonwoo
Sorry I missed this point in my previous replying :) You are right, I will work out a new patch with your suggestion.
Thanks, Leo Yan _______________________________________________ eas-dev mailing list eas-dev@lists.linaro.org https://lists.linaro.org/mailman/listinfo/eas-dev