sched: EAS: upmigrate misfit current task more efficiently
At present EAS kicks an random (not necessarily big CPU) NOHZ idle
CPU when a CPU bound task is in need of upmigration. But it's not
efficient as that way needs following unnecessary steps and wakeups:
1. Busy little CPU A kicks idle CPU B
2. CPU B runs idle balancer and enqueue migration/A
3. B goes idle
4. A runs migration/A, enqueues busy task on B.
5. B wakes up again.
This change makes active upmigration more efficiently by doing:
1. Busy little CPU A find target CPU B upon tick.
2. CPU A enqueues migration/A.
Also to prevent race between try_to_wake_up() and migration, mark
target CPU as reserved during migration and prevent from being selected
by energy_aware_wake_cpu().
Change-Id: Ie865738054ea3296f28e6ba01710635efa7193c0
Signed-off-by:
Joonwoo Park <joonwoop@codeaurora.org>
Loading
Please register or sign in to comment