summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorMorten Rasmussen <morten.rasmussen@arm.com>2016-02-25 12:51:35 +0000
committerLeo Yan <leo.yan@linaro.org>2016-05-10 16:49:55 +0800
commit0d2b1cdfa11fd62d3358eef332e78b95b6a3e9ec (patch)
treef629313ebb9a539ada64bce8fba63de7aaa3bfa0 /drivers
parentf2a8923298fe9a39cf4c9ad48bbcb0781483d1f9 (diff)
sched: Consider misfit tasks when load-balancing
With the new group_misfit_task load-balancing scenario additional policy conditions are needed when load-balancing. Misfit task balancing only makes sense between source group with lower capacity than the target group. If capacities are the same, fallback to normal group_other balancing. The aim is to balance tasks such that no task has its throughput hindered by compute capacity if a cpu with more capacity is available. Load-balancing is generally based on average load in the sched_groups, but for misfitting tasks it is necessary to introduce exceptions to migrate tasks against usual metrics and optimize throughput. This patch ensures the following load-balance for mixed capacity systems (e.g. ARM big.LITTLE) for always-running tasks: 1. Place a task on each cpu starting in order from cpus with highest capacity to lowest until all cpus are in use (i.e. one task on each cpu). 2. Once all cpus are in use balance according to compute capacity such that load per capacity is approximately the same regardless of the compute capacity (i.e. big cpus get more tasks than little cpus). Necessary changes are introduced in find_busiest_group(), calculate_imbalance(), and find_busiest_queue(). This includes passing the group_type on to find_busiest_queue() through struct lb_env, which is currently only considers imbalance and not the imbalance situation (group_type). To avoid taking remote rq locks to examine source sched_groups for misfit tasks, each cpu is responsible for tracking misfit tasks themselves and update the rq->misfit_task flag. This means checking task utilization when tasks are scheduled and on sched_tick. Signed-off-by: Morten Rasmussen <morten.rasmussen@arm.com>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions