summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Wagantall <mattw@codeaurora.org>2013-12-05 20:01:32 -0800
committerDavid Keitel <dkeitel@codeaurora.org>2016-03-23 19:58:37 -0700
commit5f10bd75eb0ef27794e28674c3b72865d846c385 (patch)
tree0426ddb3f2bd2cb0522cb60150d3336b0f519bec
parent521a572defaba88bef6d44ebf05c71aad9abd821 (diff)
sched/debug: Make sysrq prints of sched debug data optional
Calls to sysrq_sched_debug_show() can yield rather verbose output which contributes to log spew and, under heavy load, may increase the chances of a watchdog bark. Make printing of this data optional with the introduction of a new Kconfig, CONFIG_SYSRQ_SCHED_DEBUG. Change-Id: I5f54d901d0dea403109f7ac33b8881d967a899ed Signed-off-by: Matt Wagantall <mattw@codeaurora.org>
-rw-r--r--kernel/sched/core.c2
-rw-r--r--kernel/sched/debug.c2
-rw-r--r--kernel/sched/sched.h2
-rw-r--r--lib/Kconfig.debug9
4 files changed, 14 insertions, 1 deletions
diff --git a/kernel/sched/core.c b/kernel/sched/core.c
index 782c1ff86c73..e6bc81b37369 100644
--- a/kernel/sched/core.c
+++ b/kernel/sched/core.c
@@ -4994,7 +4994,7 @@ void show_state_filter(unsigned long state_filter)
touch_all_softlockup_watchdogs();
-#ifdef CONFIG_SCHED_DEBUG
+#ifdef CONFIG_SYSRQ_SCHED_DEBUG
sysrq_sched_debug_show();
#endif
rcu_read_unlock();
diff --git a/kernel/sched/debug.c b/kernel/sched/debug.c
index 641511771ae6..5799706cc6f0 100644
--- a/kernel/sched/debug.c
+++ b/kernel/sched/debug.c
@@ -408,6 +408,7 @@ static int sched_debug_show(struct seq_file *m, void *v)
return 0;
}
+#ifdef CONFIG_SYSRQ_SCHED_DEBUG
void sysrq_sched_debug_show(void)
{
int cpu;
@@ -417,6 +418,7 @@ void sysrq_sched_debug_show(void)
print_cpu(NULL, cpu);
}
+#endif
/*
* This itererator needs some explanation.
diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
index 825ce4eaf47a..fffe2623477a 100644
--- a/kernel/sched/sched.h
+++ b/kernel/sched/sched.h
@@ -1299,7 +1299,9 @@ static inline struct cpuidle_state *idle_get_state(struct rq *rq)
}
#endif
+#ifdef CONFIG_SYSRQ_SCHED_DEBUG
extern void sysrq_sched_debug_show(void);
+#endif
extern void sched_init_granularity(void);
extern void update_max_interval(void);
diff --git a/lib/Kconfig.debug b/lib/Kconfig.debug
index 56b9db804d8c..23972e246b7b 100644
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -876,6 +876,15 @@ config PANIC_ON_RT_THROTTLING
Say N if unsure.
+config SYSRQ_SCHED_DEBUG
+ bool "Print scheduling debugging info from sysrq-trigger"
+ depends on SCHED_DEBUG
+ default y
+ help
+ If you say Y here, the "show-task-states(T)" and
+ "show-blocked-tasks(W)" sysrq-triggers will print additional
+ scheduling statistics.
+
config SCHEDSTATS
bool "Collect scheduler statistics"
depends on DEBUG_KERNEL && PROC_FS