From de151d637fbe776598019f100201cbea50f199f0 Mon Sep 17 00:00:00 2001 From: Lingutla Chandrasekhar Date: Thu, 25 Apr 2019 17:02:46 +0530 Subject: [PATCH] sched: trace : Print current sched domain overutilization status Extend sched_load_balance trace event to print overutilization status of the current balancing sched domain. Change-Id: Iae14e580294a0ab38394b4e8d660d0c5dd14327d Signed-off-by: Lingutla Chandrasekhar --- include/trace/events/sched.h | 12 ++++++++---- kernel/sched/fair.c | 7 ++++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/include/trace/events/sched.h b/include/trace/events/sched.h index 9f0806599c80..d1440b5a4ccf 100644 --- a/include/trace/events/sched.h +++ b/include/trace/events/sched.h @@ -275,11 +275,12 @@ TRACE_EVENT(sched_load_balance, TP_PROTO(int cpu, enum cpu_idle_type idle, int balance, unsigned long group_mask, int busiest_nr_running, unsigned long imbalance, unsigned int env_flags, int ld_moved, - unsigned int balance_interval, int active_balance), + unsigned int balance_interval, int active_balance, + int overutilized), TP_ARGS(cpu, idle, balance, group_mask, busiest_nr_running, imbalance, env_flags, ld_moved, balance_interval, - active_balance), + active_balance, overutilized), TP_STRUCT__entry( __field(int, cpu) @@ -292,6 +293,7 @@ TRACE_EVENT(sched_load_balance, __field(int, ld_moved) __field(unsigned int, balance_interval) __field(int, active_balance) + __field(int, overutilized) ), TP_fast_assign( @@ -305,16 +307,18 @@ TRACE_EVENT(sched_load_balance, __entry->ld_moved = ld_moved; __entry->balance_interval = balance_interval; __entry->active_balance = active_balance; + __entry->overutilized = overutilized; ), - TP_printk("cpu=%d state=%s balance=%d group=%#lx busy_nr=%d imbalance=%ld flags=%#x ld_moved=%d bal_int=%d active_balance=%d", + TP_printk("cpu=%d state=%s balance=%d group=%#lx busy_nr=%d imbalance=%ld flags=%#x ld_moved=%d bal_int=%d active_balance=%d sd_overutilized=%d", __entry->cpu, __entry->idle == CPU_IDLE ? "idle" : (__entry->idle == CPU_NEWLY_IDLE ? "newly_idle" : "busy"), __entry->balance, __entry->group_mask, __entry->busiest_nr_running, __entry->imbalance, __entry->env_flags, __entry->ld_moved, - __entry->balance_interval, __entry->active_balance) + __entry->balance_interval, __entry->active_balance, + __entry->overutilized) ); TRACE_EVENT(sched_load_balance_nohz_kick, diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index b5dc0bee902d..3a5e8ba90f3c 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -10253,7 +10253,12 @@ out: group ? group->cpumask[0] : 0, busiest ? busiest->nr_running : 0, env.imbalance, env.flags, ld_moved, - sd->balance_interval, active_balance); + sd->balance_interval, active_balance, +#ifdef CONFIG_SCHED_WALT + sd_overutilized(sd)); +#else + READ_ONCE(this_rq->rd->overutilized)); +#endif return ld_moved; }