Hi all, As a follow-up of my recent proposal to remove SD_WAKE_AFFINE, I have this initial-draft and unfinished refactoring to select_task_rq_fair().
Basic idea is to form a comprehensive view of the topology to guide the select. My many wanted jobs haven't been achieved, so I decided to post this initial draft earlier to have your comments and experiences (I have no experience on production multi-socket machines and no real experince on heterogeneous CPUs). But generally, better topology view, I believe, should greatly help with the full spectrum of machines from big to small. Just lightly tested, it only works, :) So my patches are built on Peter's select_idle_sibling() patches (so all of them should be a little outdated), and borrowed his scan cost regulation part. Thanks a lot. Yuyang -- Peter Zijlstra (6): sched: Remove unused @cpu argument from destroy_sched_domain*() sched: Restructure destroy_sched_domain() sched: Introduce struct sched_domain_shared sched: Replace sd_busy/nr_busy_cpus with sched_domain_shared sched: Rewrite select_idle_siblings() sched: Optimize SCHED_SMT Yuyang Du (5): sched: Clean up SD_BALANCE_WAKE flags in sched domain build-up sched: Remove SD_WAKE_AFFINE flag and replace it with SD_BALANCE_WAKE sched: Add per CPU variable sd_socket_id to specify the CPU's socket sched: Add sched_llc_complete static key to specify whether the LLC covers all CPUs sched/fair: Refactor select_task_rq_fair() include/linux/sched.h | 17 +- kernel/sched/core.c | 134 ++++++++--- kernel/sched/deadline.c | 2 +- kernel/sched/fair.c | 589 +++++++++++++++++++++++++++++++++++++++++----- kernel/sched/features.h | 1 + kernel/sched/idle_task.c | 2 +- kernel/sched/rt.c | 2 +- kernel/sched/sched.h | 28 ++- kernel/time/tick-sched.c | 10 +- 9 files changed, 680 insertions(+), 105 deletions(-) -- 1.7.9.5