From f3f8d55011837f34584fc223e2a26b13623ff296 Mon Sep 17 00:00:00 2001 From: JianMin Liu Date: Fri, 23 Apr 2021 17:23:52 +0800 Subject: [PATCH] ANDROID: sched: Add vendor hooks for update_load_avg Add vh before and after __update_load_avg_se in order to collect load change of tasks. Bug: 185557444 Change-Id: I210973f7e388164b68ed766074d1420cdf9d4c32 Signed-off-by: JianMin Liu --- drivers/android/vendor_hooks.c | 2 ++ include/trace/hooks/sched.h | 8 ++++++++ kernel/sched/fair.c | 3 +++ 3 files changed, 13 insertions(+) diff --git a/drivers/android/vendor_hooks.c b/drivers/android/vendor_hooks.c index 2a8543131fdf..85f0b87216c9 100644 --- a/drivers/android/vendor_hooks.c +++ b/drivers/android/vendor_hooks.c @@ -257,3 +257,5 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_entity); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_entity_tick); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_enqueue_task_fair); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_dequeue_task_fair); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_prepare_update_load_avg_se); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_finish_update_load_avg_se); diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index 1e9a0044bafb..ae508abbae2b 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -346,6 +346,14 @@ DECLARE_RESTRICTED_HOOK(android_rvh_dequeue_task_fair, TP_PROTO(struct rq *rq, struct task_struct *p, int flags), TP_ARGS(rq, p, flags), 1); +DECLARE_HOOK(android_vh_prepare_update_load_avg_se, + TP_PROTO(struct sched_entity *se, int flags), + TP_ARGS(se, flags)); + +DECLARE_HOOK(android_vh_finish_update_load_avg_se, + TP_PROTO(struct sched_entity *se, int flags), + TP_ARGS(se, flags)); + /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_SCHED_H */ diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index a9721b74afe3..81b80871cce3 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -3792,6 +3792,7 @@ static inline void update_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *s u64 now = cfs_rq_clock_pelt(cfs_rq); int decayed; + trace_android_vh_prepare_update_load_avg_se(se, flags); /* * Track task load average for carrying it to new CPU after migrated, and * track group sched_entity load average for task_h_load calc in migration @@ -3799,6 +3800,8 @@ static inline void update_load_avg(struct cfs_rq *cfs_rq, struct sched_entity *s if (se->avg.last_update_time && !(flags & SKIP_AGE_LOAD)) __update_load_avg_se(now, cfs_rq, se); + trace_android_vh_finish_update_load_avg_se(se, flags); + decayed = update_cfs_rq_load_avg(now, cfs_rq); decayed |= propagate_entity_load_avg(se);