Vincent Guittot
be192b51bf
UPSTREAM: sched/fair: Prefer prev cpu in asymmetric wakeup path
...
During fast wakeup path, scheduler always check whether local or prev
cpus are good candidates for the task before looking for other cpus in
the domain. With commit b7a331615d25 ("sched/fair: Add asymmetric CPU
capacity wakeup scan") the heterogenous system gains a dedicated path
but doesn't try to reuse prev cpu whenever possible. If the previous
cpu is idle and belong to the LLC domain, we should check it 1st
before looking for another cpu because it stays one of the best
candidate and this also stabilizes task placement on the system.
This change aligns asymmetric path behavior with symmetric one and reduces
cases where the task migrates across all cpus of the sd_asym_cpucapacity
domains at wakeup.
This change does not impact normal EAS mode but only the overloaded case or
when EAS is not used.
- On hikey960 with performance governor (EAS disable)
./perf bench sched pipe -T -l 50000
mainline w/ patch
ops/sec 149313(+/-0.28%) 182587(+/- 0.40) +22%
- On hikey with performance governor
./perf bench sched pipe -T -l 50000
mainline w/ patch
ops/sec 47721(+/-0.76%) 47899(+/- 0.56) +0.4%
According to test on hikey, the patch doesn't impact symmetric system
compared to current implementation (only tested on arm64)
Also read the uclamped value of task's utilization at most twice instead
instead each time we compare task's utilization with cpu's capacity.
Fixes: b7a331615d25 ("sched/fair: Add asymmetric CPU capacity wakeup scan")
Signed-off-by: Vincent Guittot <vincent.guittot@linaro.org>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Reviewed-by: Valentin Schneider <valentin.schneider@arm.com>
Link: https://lkml.kernel.org/r/20201029161824.26389-1-vincent.guittot@linaro.org
(cherry picked from commit b4c9c9f15649c98a5b45408919d1ff4fd7f5531c)
Bug: 187129171
Signed-off-by: Connor O'Brien <connoro@google.com>
Change-Id: Icaba6ae29d5bd23f87ca5492b778869be9e0d9c9
2021-05-03 20:55:31 -07:00
..
bpf
Merge tag 'android11-5.4.86_r00' from 'android11-5.4-lts' into 'android11-5.4'
2021-02-17 16:57:46 +01:00
cgroup
ANDROID: cgroup: Add vendor hook to the cgroup
2021-03-09 21:56:56 +00:00
configs
debug
kgdb: Make "kgdbcon" work properly with "kgdb_earlycon"
2020-11-05 11:43:16 +01:00
dma
This is the 5.4.78 stable release
2020-11-19 08:52:52 +01:00
events
This is the 5.4.78 stable release
2020-11-19 08:52:52 +01:00
gcov
gcov: add support for GCC 10.1
2020-09-17 13:47:56 +02:00
irq
This is the 5.4.86 stable release
2020-12-30 12:31:14 +01:00
livepatch
ANDROID: kallsyms: increase KSYM_NAME_LEN
2020-08-04 19:33:41 +00:00
locking
Merge tag 'android11-5.4.86_r00' from 'android11-5.4-lts' into 'android11-5.4'
2021-02-17 16:57:46 +01:00
power
This is the 5.4.73 stable release
2020-10-29 11:38:08 +01:00
printk
This is the 5.4.69 stable release
2020-10-01 18:00:35 +02:00
rcu
This is the 5.4.80 stable release
2020-11-25 12:46:13 +01:00
sched
UPSTREAM: sched/fair: Prefer prev cpu in asymmetric wakeup path
2021-05-03 20:55:31 -07:00
time
This is the 5.4.78 stable release
2020-11-19 08:52:52 +01:00
trace
Merge tag 'android11-5.4.86_r00' from 'android11-5.4-lts' into 'android11-5.4'
2021-02-17 16:57:46 +01:00
.gitignore
FROMGIT: kbuild: update config_data.gz only when the content of .config is changed
2021-04-28 12:57:52 -07:00
acct.c
async.c
audit.c
audit: fix a net reference leak in audit_list_rules_send()
2020-06-22 09:30:59 +02:00
audit.h
audit: fix a net reference leak in audit_list_rules_send()
2020-06-22 09:30:59 +02:00
audit_fsnotify.c
audit_tree.c
audit_watch.c
audit: CONFIG_CHANGE don't log internal bookkeeping as an event
2020-10-01 13:17:32 +02:00
auditfilter.c
audit: fix a net reference leak in audit_list_rules_send()
2020-06-22 09:30:59 +02:00
auditsc.c
backtracetest.c
bounds.c
capability.c
cfi.c
ANDROID: cfi: ensure RCU is watching in __cfi_slowpath
2020-11-02 18:55:52 +00:00
compat.c
configs.c
kernel/configs: Replace GPL boilerplate code with SPDX identifier
2019-07-30 18:34:15 +02:00
context_tracking.c
cpu.c
This is the 5.4.86 stable release
2020-12-30 12:31:14 +01:00
cpu_pm.c
kernel/cpu_pm: Fix uninitted local in cpu_pm
2020-06-22 09:31:22 +02:00
crash_core.c
crash_dump.c
cred.c
keys: Fix request_key() cache
2020-01-17 19:48:42 +01:00
delayacct.c
dma.c
elfcore.c
kernel/elfcore.c: include proper prototypes
2019-09-25 17:51:39 -07:00
exec_domain.c
exit.c
don't dump the threads that had been already exiting when zapped.
2020-11-18 19:20:31 +01:00
extable.c
extable: Add function to search only kernel exception table
2019-08-21 22:23:48 +10:00
fail_function.c
fail_function: Remove a redundant mutex unlock
2020-11-24 13:29:18 +01:00
fork.c
This is the 5.4.76 stable release
2020-11-10 15:10:23 +01:00
freezer.c
Revert "libata, freezer: avoid block device removal while system is frozen"
2019-10-06 09:11:37 -06:00
futex.c
UPSTREAM: futex: Handle faults correctly for PI futexes
2021-01-29 13:16:10 +01:00
gen_kheaders.sh
kbuild: add variables for compression tools
2020-09-03 11:27:10 +02:00
groups.c
hung_task.c
iomem.c
irq_work.c
jump_label.c
jump_label: Don't warn on __exit jump entries
2019-08-29 15:10:10 +01:00
kallsyms.c
ANDROID: kallsyms: ignore ThinLTO+CFI hash suffix in kallsyms_lookup_name()
2020-09-22 20:17:26 +00:00
kcmp.c
Revert "kernel/kcmp.c: Use new infrastructure to fix deadlocks in execve"
2020-10-01 20:29:16 +02:00
Kconfig.freezer
Kconfig.hz
Kconfig.locks
Kconfig.preempt
sched/rt, Kconfig: Unbreak def/oldconfig with CONFIG_PREEMPT=y
2019-07-22 18:05:11 +02:00
kcov.c
UPSTREAM: kcov: remote coverage support
2020-01-13 18:54:56 +00:00
kexec.c
kexec_load: Disable at runtime if the kernel is locked down
2019-08-19 21:54:15 -07:00
kexec_core.c
kexec: bail out upon SIGKILL when allocating memory.
2019-09-25 17:51:40 -07:00
kexec_elf.c
kexec_elf: support 32 bit ELF files
2019-09-06 23:58:44 +02:00
kexec_file.c
Merge branch 'next-lockdown' of git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security
2019-09-28 08:14:15 -07:00
kexec_internal.h
kheaders.c
kmod.c
kmod: make request_module() return an error when autoloading is disabled
2020-04-17 10:50:22 +02:00
kprobes.c
kprobes: Fix compiler warning for !CONFIG_KPROBES_ON_FTRACE
2020-10-01 13:18:25 +02:00
ksysfs.c
kthread.c
Merge branch 'android11-5.4' into 'android11-5.4-lts'
2020-12-11 13:32:37 +01:00
latencytop.c
Makefile
FROMGIT: kbuild: update config_data.gz only when the content of .config is changed
2021-04-28 12:57:52 -07:00
module-internal.h
module.c
Merge branch 'android11-5.4' into 'android11-5.4-lts'
2020-11-14 11:32:19 +01:00
module_signature.c
MODSIGN: Export module signature definitions
2019-08-05 18:39:56 -04:00
module_signing.c
MODSIGN: Export module signature definitions
2019-08-05 18:39:56 -04:00
notifier.c
kernel/notifier.c: intercept duplicate registrations to avoid infinite loops
2020-10-01 13:17:23 +02:00
nsproxy.c
padata.c
padata: add separate cpuhp node for CPUHP_PADATA_DEAD
2020-06-17 16:40:22 +02:00
panic.c
panic: ensure preemption is disabled during panic()
2019-10-07 15:47:19 -07:00
params.c
lockdown: Lock down module params that specify hardware parameters (eg. ioport)
2019-08-19 21:54:16 -07:00
pid.c
ANDROID: GKI: pid: Export for find_task_by_vpid
2020-09-28 18:10:49 +00:00
pid_namespace.c
proc/sysctl: add shared variables for range check
2019-07-18 17:08:07 -07:00
profile.c
ptrace.c
ptrace: Set PF_SUPERPRIV when checking capability
2020-11-24 13:29:24 +01:00
range.c
reboot.c
This is the 5.4.78 stable release
2020-11-19 08:52:52 +01:00
relay.c
kernel/relay.c: fix memleak on destroy relay channel
2020-08-26 10:40:51 +02:00
resource.c
/dev/mem: Revoke mappings when a driver claims the region
2020-06-24 17:50:35 +02:00
rseq.c
scs.c
ANDROID: scs: fix recursive spinlock in scs_check_usage
2020-06-09 08:28:50 +00:00
seccomp.c
seccomp: Set PF_SUPERPRIV when checking capability
2020-11-24 13:29:24 +01:00
signal.c
This is the 5.4.76 stable release
2020-11-10 15:10:23 +01:00
smp.c
smp: Warn on function calls from softirq context
2019-07-20 11:27:16 +02:00
smpboot.c
smpboot.h
softirq.c
stackleak.c
stacktrace.c
stacktrace: Don't skip first entry on noncurrent tasks
2019-11-04 21:19:25 +01:00
stop_machine.c
stop_machine: Avoid potential race behaviour
2019-10-17 12:47:12 +02:00
sys.c
ANDROID: Add vendor hooks when syscall prctl finished
2021-03-09 21:57:07 +00:00
sys_ni.c
sysctl-test.c
kernel/sysctl-test: Add null pointer test for sysctl.c:proc_dointvec()
2020-10-01 13:17:10 +02:00
sysctl.c
This is the 5.4.8 stable release
2020-01-04 19:40:03 +01:00
sysctl_binary.c
task_work.c
taskstats.c
taskstats: fix data-race
2020-01-09 10:19:54 +01:00
test_kprobes.c
torture.c
torture: Remove exporting of internal functions
2019-08-01 14:30:22 -07:00
tracepoint.c
tsacct.c
ucount.c
proc/sysctl: add shared variables for range check
2019-07-18 17:08:07 -07:00
uid16.c
uid16.h
umh.c
usermodehelper: reset umask to default before executing user process
2020-10-14 10:32:58 +02:00
up.c
user-return-notifier.c
user.c
Revert "ANDROID: proc: Add /proc/uid directory"
2020-03-06 20:23:08 +00:00
user_namespace.c
utsname.c
utsname_sysctl.c
watchdog.c
watchdog/softlockup: Enforce that timestamp is valid on boot
2020-02-24 08:36:52 +01:00
watchdog_hld.c
workqueue.c
Merge branch 'android11-5.4' into 'android11-5.4-lts
2020-10-14 09:58:52 +02:00
workqueue_internal.h