From 9e8dedef1e892ce9d54d90107faa6a568e5d39ac Mon Sep 17 00:00:00 2001 From: Jing-Ting Wu Date: Tue, 26 Jul 2022 21:04:35 +0800 Subject: [PATCH] ANDROID: sched: add vendor hook to PELT multiplier We add vendor hook at sched_pelt_multiplier for performance tuning. Bug: 240896506 Change-Id: I10e3436a986dd5dd7d375460922407666f27739d Signed-off-by: Jing-Ting Wu Signed-off-by: JianMin Liu --- drivers/android/vendor_hooks.c | 1 + include/trace/hooks/sched.h | 4 ++++ kernel/sched/pelt.c | 5 +++++ 3 files changed, 10 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index bb6c7f859b26..345e6dc1b7b3 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -435,3 +435,4 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_free_pages); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_set_shmem_page_flag); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_pidfd_open); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_mmput); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_pelt_multiplier); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 551cab4d1649..d0fc31e2c966 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -398,6 +398,10 @@ DECLARE_HOOK(android_vh_pidfd_open, DECLARE_HOOK(android_vh_mmput, TP_PROTO(void *unused), TP_ARGS(unused)); + +DECLARE_HOOK(android_vh_sched_pelt_multiplier, + TP_PROTO(unsigned int old, unsigned int cur, int *ret), + TP_ARGS(old, cur, ret)); /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_SCHED_H */ diff --git a/kernel/sched/pelt.c b/kernel/sched/pelt.c index 2d2c0fa9812d..15a237ab2d0c 100644 --- a/kernel/sched/pelt.c +++ b/kernel/sched/pelt.c @@ -532,6 +532,7 @@ int update_irq_load_avg(struct rq *rq, u64 running) } #endif +#include DEFINE_PER_CPU(u64, clock_task_mult); unsigned int sysctl_sched_pelt_multiplier = 1; @@ -553,6 +554,10 @@ int sched_pelt_multiplier(struct ctl_table *table, int write, void *buffer, if (!write) goto done; + trace_android_vh_sched_pelt_multiplier(old, sysctl_sched_pelt_multiplier, &ret); + if (ret) + goto undo; + switch (sysctl_sched_pelt_multiplier) { case 1: fallthrough;