ANDROID: sched: Add vendor hook for PELT to track customized signal
Current tracking cannot reflect the characteristics of different tasks. It is necessary to adjust the degree and speed of changes in different task loadings, so we add vendor hooks to enable it. Bug: 378410131 Change-Id: I1c12ab56614cb4cf663d78730ad320e5d6837e2b Signed-off-by: Peter-TY Tsai <peter-ty.tsai@mediatek.com> [jstultz: Reworked for minor lint issues] Signed-off-by: John Stultz <jstultz@google.com>
This commit is contained in:
committed by
Treehugger Robot
parent
666107de1a
commit
0ad6085362
@@ -380,6 +380,26 @@ struct sugov_policy;
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_set_sugov_update,
|
||||
TP_PROTO(struct sugov_policy *sg_policy, unsigned int next_freq, bool *should_update),
|
||||
TP_ARGS(sg_policy, next_freq, should_update), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_update_rq_clock_pelt,
|
||||
TP_PROTO(struct rq *rq, s64 delta, int *ret),
|
||||
TP_ARGS(rq, delta, ret), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_update_load_avg_blocked_se,
|
||||
TP_PROTO(u64 now, struct sched_entity *se, int *ret),
|
||||
TP_ARGS(now, se, ret), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_update_load_avg_se,
|
||||
TP_PROTO(u64 now, struct cfs_rq *cfs_rq, struct sched_entity *se, int *ret),
|
||||
TP_ARGS(now, cfs_rq, se, ret), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_update_load_avg_cfs_rq,
|
||||
TP_PROTO(u64 now, struct cfs_rq *cfs_rq, int *ret),
|
||||
TP_ARGS(now, cfs_rq, ret), 1);
|
||||
|
||||
DECLARE_RESTRICTED_HOOK(android_rvh_update_rt_rq_load_avg_internal,
|
||||
TP_PROTO(u64 now, struct rq *rq, int running, int *ret),
|
||||
TP_ARGS(now, rq, running, ret), 1);
|
||||
/* macro versions of hooks are no longer required */
|
||||
|
||||
#endif /* _TRACE_HOOK_SCHED_H */
|
||||
|
||||
@@ -294,6 +294,12 @@ ___update_load_avg(struct sched_avg *sa, unsigned long load)
|
||||
|
||||
int __update_load_avg_blocked_se(u64 now, struct sched_entity *se)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
trace_android_rvh_update_load_avg_blocked_se(now, se, &ret);
|
||||
if (ret != -1)
|
||||
return ret;
|
||||
|
||||
if (___update_load_sum(now, &se->avg, 0, 0, 0)) {
|
||||
___update_load_avg(&se->avg, se_weight(se));
|
||||
trace_pelt_se_tp(se);
|
||||
@@ -306,6 +312,12 @@ EXPORT_SYMBOL_GPL(__update_load_avg_blocked_se);
|
||||
|
||||
int __update_load_avg_se(u64 now, struct cfs_rq *cfs_rq, struct sched_entity *se)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
trace_android_rvh_update_load_avg_se(now, cfs_rq, se, &ret);
|
||||
if (ret != -1)
|
||||
return ret;
|
||||
|
||||
if (___update_load_sum(now, &se->avg, !!se->on_rq, se_runnable(se),
|
||||
cfs_rq->curr == se)) {
|
||||
|
||||
@@ -320,6 +332,12 @@ int __update_load_avg_se(u64 now, struct cfs_rq *cfs_rq, struct sched_entity *se
|
||||
|
||||
int __update_load_avg_cfs_rq(u64 now, struct cfs_rq *cfs_rq)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
trace_android_rvh_update_load_avg_cfs_rq(now, cfs_rq, &ret);
|
||||
if (ret != -1)
|
||||
return ret;
|
||||
|
||||
if (___update_load_sum(now, &cfs_rq->avg,
|
||||
scale_load_down(cfs_rq->load.weight),
|
||||
cfs_rq->h_nr_running,
|
||||
@@ -346,6 +364,12 @@ int __update_load_avg_cfs_rq(u64 now, struct cfs_rq *cfs_rq)
|
||||
|
||||
int update_rt_rq_load_avg(u64 now, struct rq *rq, int running)
|
||||
{
|
||||
int ret = -1;
|
||||
|
||||
trace_android_rvh_update_rt_rq_load_avg_internal(now, rq, running, &ret);
|
||||
if (ret != -1)
|
||||
return ret;
|
||||
|
||||
if (___update_load_sum(now, &rq->avg_rt,
|
||||
running,
|
||||
running,
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
#ifdef CONFIG_SMP
|
||||
#include <trace/hooks/sched.h>
|
||||
#include "sched-pelt.h"
|
||||
|
||||
int __update_load_avg_blocked_se(u64 now, struct sched_entity *se);
|
||||
@@ -103,6 +104,12 @@ static inline void _update_idle_rq_clock_pelt(struct rq *rq)
|
||||
*/
|
||||
static inline void update_rq_clock_pelt(struct rq *rq, s64 delta)
|
||||
{
|
||||
int ret = 0;
|
||||
|
||||
trace_android_rvh_update_rq_clock_pelt(rq, delta, &ret);
|
||||
if (ret)
|
||||
return;
|
||||
|
||||
if (unlikely(is_idle_task(rq->curr))) {
|
||||
_update_idle_rq_clock_pelt(rq);
|
||||
return;
|
||||
|
||||
@@ -99,3 +99,8 @@ EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_cpus_allowed_ptr);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_blocked_fair);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_task_comm);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_set_sugov_update);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_rq_clock_pelt);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_load_avg_blocked_se);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_load_avg_se);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_load_avg_cfs_rq);
|
||||
EXPORT_TRACEPOINT_SYMBOL_GPL(android_rvh_update_rt_rq_load_avg_internal);
|
||||
|
||||
Reference in New Issue
Block a user