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 <jian-min.liu@mediatek.com>
This commit is contained in:
JianMin Liu 2021-04-23 17:23:52 +08:00 committed by Quentin Perret
commit f3f8d55011
3 changed files with 13 additions and 0 deletions

View file

@ -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);

View file

@ -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 */

View file

@ -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);