From a896c5086026e156a637cfffda7ceaab46f75dbc Mon Sep 17 00:00:00 2001 From: maoshenshen Date: Tue, 9 Apr 2024 20:34:38 +0800 Subject: [PATCH] ANDROID: vendor_hooks: add hooks in cpu_cgroup subsystem Add hooks to tune cpu policy based on cpu_cgroup. Bug: 333664691 Change-Id: If7ca0f2ae774f433563abfbe4e761f3fb9645633 Signed-off-by: maoshenshen (cherry picked from commit 66b74bb79ddfe12ea63b05880eef0548aa4bf6d8) --- include/trace/hooks/sched.h | 15 +++++++++++++++ kernel/sched/core.c | 8 +++++++- kernel/sched/vendor_hooks.c | 4 ++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/include/trace/hooks/sched.h b/include/trace/hooks/sched.h index bb30ede2b191..360ad3da62f0 100644 --- a/include/trace/hooks/sched.h +++ b/include/trace/hooks/sched.h @@ -421,6 +421,21 @@ DECLARE_HOOK(android_vh_sched_setaffinity_early, DECLARE_HOOK(android_vh_reweight_entity, TP_PROTO(struct sched_entity *se), TP_ARGS(se)); + +struct cgroup_subsys_state; +DECLARE_HOOK(android_vh_sched_move_task, + TP_PROTO(struct task_struct *tsk), + TP_ARGS(tsk)); +DECLARE_HOOK(android_vh_cpu_cgroup_css_alloc, + TP_PROTO(struct task_group *tg, struct cgroup_subsys_state *parent_css), + TP_ARGS(tg, parent_css)); +DECLARE_HOOK(android_vh_cpu_cgroup_css_alloc_early, + TP_PROTO(struct task_group *parent), + TP_ARGS(parent)); +DECLARE_HOOK(android_vh_cpu_cgroup_css_free, + TP_PROTO(struct cgroup_subsys_state *css), + TP_ARGS(css)); + /* macro versions of hooks are no longer required */ #endif /* _TRACE_HOOK_SCHED_H */ diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 9098f28b3cbc..eed0f2b8f092 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -9988,6 +9988,7 @@ void sched_move_task(struct task_struct *tsk) struct task_group *group; struct rq *rq; + trace_android_vh_sched_move_task(tsk); CLASS(task_rq_lock, rq_guard)(tsk); rq = rq_guard.rq; @@ -10032,6 +10033,7 @@ cpu_cgroup_css_alloc(struct cgroup_subsys_state *parent_css) struct task_group *tg; if (!parent) { + trace_android_vh_cpu_cgroup_css_alloc_early(parent); /* This is early initialization for the top cgroup */ return &root_task_group.css; } @@ -10040,6 +10042,8 @@ cpu_cgroup_css_alloc(struct cgroup_subsys_state *parent_css) if (IS_ERR(tg)) return ERR_PTR(-ENOMEM); + trace_android_vh_cpu_cgroup_css_alloc(tg, parent_css); + return &tg->css; } @@ -10090,6 +10094,8 @@ static void cpu_cgroup_css_free(struct cgroup_subsys_state *css) * Relies on the RCU grace period between css_released() and this. */ sched_unregister_group(tg); + + trace_android_vh_cpu_cgroup_css_free(css); } static int cpu_cgroup_can_attach(struct cgroup_taskset *tset) @@ -11052,7 +11058,7 @@ struct cgroup_subsys cpu_cgrp_subsys = { .early_init = true, .threaded = true, }; - +EXPORT_SYMBOL_GPL(cpu_cgrp_subsys); #endif /* CONFIG_CGROUP_SCHED */ void dump_cpu_task(int cpu) diff --git a/kernel/sched/vendor_hooks.c b/kernel/sched/vendor_hooks.c index 49bd2ae7d2a4..4502699bcc88 100644 --- a/kernel/sched/vendor_hooks.c +++ b/kernel/sched/vendor_hooks.c @@ -109,3 +109,7 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_load_avg_cfs_rq); EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_rt_rq_load_avg_internal); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_map_util_freq); EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_reweight_entity); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_sched_move_task); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_cgroup_css_alloc_early); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_cgroup_css_alloc); +EXPORT_TRACEPOINT_SYMBOL_GPL(android_vh_cpu_cgroup_css_free);