* [RFC PATCH v5 0/2] hung_task: Display every hung task warning @ 2014-01-23 10:56 Aaron Tomlin 2014-01-23 10:56 ` [RFC PATCH v5 1/2] sysctl: Make neg_one a standard constraint Aaron Tomlin 2014-01-23 10:56 ` [RFC PATCH v5 2/2] hung_task: Display every hung task warning Aaron Tomlin 0 siblings, 2 replies; 5+ messages in thread From: Aaron Tomlin @ 2014-01-23 10:56 UTC (permalink / raw) To: mingo; +Cc: linux-kernel, rientjes, mingo, oleg, riel, akpm, atomlin When khungtaskd detects hung tasks, it prints out backtraces from a number of those tasks. Limiting the number of backtraces being printed out can result in the user not seeing the information necessary to debug the issue. The hung_task_warnings sysctl controls this feature. This patch makes it possible for hung_task_warnings to accept a special value to print an unlimited number of backtraces when khungtaskd detects hung tasks. The special value is -1. To use this value it is necessary to change types from ulong to int. Rebased against v3.13-rc8. Changes since v4: - Improve the documentation on hung_task_warnings Changes since v3: - Simplify the commit message (Rik van Riel and David Rientjes) - Document hung_task_* sysctl parameters (David Rientjes) Aaron Tomlin (2): sysctl: Make neg_one a standard constraint hung_task: Display every hung task warning Documentation/sysctl/kernel.txt | 42 +++++++++++++++++++++++++++++++++++++++++ include/linux/sched/sysctl.h | 2 +- kernel/hung_task.c | 6 ++++-- kernel/sysctl.c | 6 ++++-- 4 files changed, 51 insertions(+), 5 deletions(-) -- 1.8.4.2 ^ permalink raw reply [flat|nested] 5+ messages in thread
* [RFC PATCH v5 1/2] sysctl: Make neg_one a standard constraint 2014-01-23 10:56 [RFC PATCH v5 0/2] hung_task: Display every hung task warning Aaron Tomlin @ 2014-01-23 10:56 ` Aaron Tomlin 2014-01-25 8:48 ` Ingo Molnar 2014-01-23 10:56 ` [RFC PATCH v5 2/2] hung_task: Display every hung task warning Aaron Tomlin 1 sibling, 1 reply; 5+ messages in thread From: Aaron Tomlin @ 2014-01-23 10:56 UTC (permalink / raw) To: mingo; +Cc: linux-kernel, rientjes, mingo, oleg, riel, akpm, atomlin Add neg_one to the list of standard constraints. Signed-off-by: Aaron Tomlin <atomlin@redhat.com> Acked-by: Rik van Riel <riel@redhat.com> Acked-by: David Rientjes <rientjes@google.com> --- kernel/sysctl.c | 1 + 1 file changed, 1 insertion(+) diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 34a6047..dd531a6 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -122,6 +122,7 @@ extern int blk_iopoll_enabled; static int sixty = 60; #endif +static int neg_one = -1; static int zero; static int __maybe_unused one = 1; static int __maybe_unused two = 2; -- 1.8.4.2 ^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [RFC PATCH v5 1/2] sysctl: Make neg_one a standard constraint 2014-01-23 10:56 ` [RFC PATCH v5 1/2] sysctl: Make neg_one a standard constraint Aaron Tomlin @ 2014-01-25 8:48 ` Ingo Molnar 2014-01-25 8:58 ` Ingo Molnar 0 siblings, 1 reply; 5+ messages in thread From: Ingo Molnar @ 2014-01-25 8:48 UTC (permalink / raw) To: Aaron Tomlin; +Cc: linux-kernel, rientjes, mingo, oleg, riel, akpm * Aaron Tomlin <atomlin@redhat.com> wrote: > Add neg_one to the list of standard constraints. > > Signed-off-by: Aaron Tomlin <atomlin@redhat.com> > Acked-by: Rik van Riel <riel@redhat.com> > Acked-by: David Rientjes <rientjes@google.com> > --- > kernel/sysctl.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/kernel/sysctl.c b/kernel/sysctl.c > index 34a6047..dd531a6 100644 > --- a/kernel/sysctl.c > +++ b/kernel/sysctl.c > @@ -122,6 +122,7 @@ extern int blk_iopoll_enabled; > static int sixty = 60; > #endif > > +static int neg_one = -1; > static int zero; > static int __maybe_unused one = 1; > static int __maybe_unused two = 2; So what happens if CONFIG_DETECT_HUNG_TASK is not defined and neg_one is unused? The compiler generates an unused variable warning. Thanks, Ingo ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC PATCH v5 1/2] sysctl: Make neg_one a standard constraint 2014-01-25 8:48 ` Ingo Molnar @ 2014-01-25 8:58 ` Ingo Molnar 0 siblings, 0 replies; 5+ messages in thread From: Ingo Molnar @ 2014-01-25 8:58 UTC (permalink / raw) To: Aaron Tomlin; +Cc: linux-kernel, rientjes, mingo, oleg, riel, akpm * Ingo Molnar <mingo@kernel.org> wrote: > > * Aaron Tomlin <atomlin@redhat.com> wrote: > > > Add neg_one to the list of standard constraints. > > > > Signed-off-by: Aaron Tomlin <atomlin@redhat.com> > > Acked-by: Rik van Riel <riel@redhat.com> > > Acked-by: David Rientjes <rientjes@google.com> > > --- > > kernel/sysctl.c | 1 + > > 1 file changed, 1 insertion(+) > > > > diff --git a/kernel/sysctl.c b/kernel/sysctl.c > > index 34a6047..dd531a6 100644 > > --- a/kernel/sysctl.c > > +++ b/kernel/sysctl.c > > @@ -122,6 +122,7 @@ extern int blk_iopoll_enabled; > > static int sixty = 60; > > #endif > > > > +static int neg_one = -1; > > static int zero; > > static int __maybe_unused one = 1; > > static int __maybe_unused two = 2; > > So what happens if CONFIG_DETECT_HUNG_TASK is not defined and > neg_one is unused? The compiler generates an unused variable > warning. Note, I fixed this up in your patch, no need to resend. Thanks, Ingo ^ permalink raw reply [flat|nested] 5+ messages in thread
* [RFC PATCH v5 2/2] hung_task: Display every hung task warning 2014-01-23 10:56 [RFC PATCH v5 0/2] hung_task: Display every hung task warning Aaron Tomlin 2014-01-23 10:56 ` [RFC PATCH v5 1/2] sysctl: Make neg_one a standard constraint Aaron Tomlin @ 2014-01-23 10:56 ` Aaron Tomlin 1 sibling, 0 replies; 5+ messages in thread From: Aaron Tomlin @ 2014-01-23 10:56 UTC (permalink / raw) To: mingo; +Cc: linux-kernel, rientjes, mingo, oleg, riel, akpm, atomlin When khungtaskd detects hung tasks, it prints out backtraces from a number of those tasks. Limiting the number of backtraces being printed out can result in the user not seeing the information necessary to debug the issue. The hung_task_warnings sysctl controls this feature. This patch makes it possible for hung_task_warnings to accept a special value to print an unlimited number of backtraces when khungtaskd detects hung tasks. The special value is -1. To use this value it is necessary to change types from ulong to int. Signed-off-by: Aaron Tomlin <atomlin@redhat.com> Reviewed-by: Rik van Riel <riel@redhat.com> Acked-by: David Rientjes <rientjes@google.com> --- Documentation/sysctl/kernel.txt | 43 +++++++++++++++++++++++++++++++++++++++++ include/linux/sched/sysctl.h | 2 +- kernel/hung_task.c | 6 ++++-- kernel/sysctl.c | 5 +++-- 4 files changed, 51 insertions(+), 5 deletions(-) diff --git a/Documentation/sysctl/kernel.txt b/Documentation/sysctl/kernel.txt index 26b7ee4..aff1d31 100644 --- a/Documentation/sysctl/kernel.txt +++ b/Documentation/sysctl/kernel.txt @@ -33,6 +33,10 @@ show up in /proc/sys/kernel: - domainname - hostname - hotplug +- hung_task_panic +- hung_task_check_count +- hung_task_timeout_secs +- hung_task_warnings - kptr_restrict - kstack_depth_to_print [ X86 only ] - l2cr [ PPC only ] @@ -287,6 +291,45 @@ Default value is "/sbin/hotplug". ============================================================== +hung_task_panic: + +Controls the kernel's behavior when a hung task is detected. +This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. + +0: continue operation. This is the default behavior. + +1: panic immediately. + +============================================================== + +hung_task_check_count: + +The upper bound on the number of tasks that are checked. +This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. + +============================================================== + +hung_task_timeout_secs: + +Check interval. When a task in D state did not get scheduled +for more than this value report a warning. +This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. + +0: means infinite timeout - no checking done. + +============================================================== + +hung_task_warning: + +The maximum number of warnings to report. During a check interval +if a hung task is detected, this value is decreased by 1. +When this value reaches 0, no more warnings will be reported. +This file shows up if CONFIG_DETECT_HUNG_TASK is enabled. + +-1: report an infinite number of warnings. + +============================================================== + kptr_restrict: This toggle indicates whether restrictions are placed on diff --git a/include/linux/sched/sysctl.h b/include/linux/sched/sysctl.h index 41467f8..eb3c72d7 100644 --- a/include/linux/sched/sysctl.h +++ b/include/linux/sched/sysctl.h @@ -5,7 +5,7 @@ extern int sysctl_hung_task_check_count; extern unsigned int sysctl_hung_task_panic; extern unsigned long sysctl_hung_task_timeout_secs; -extern unsigned long sysctl_hung_task_warnings; +extern int sysctl_hung_task_warnings; extern int proc_dohung_task_timeout_secs(struct ctl_table *table, int write, void __user *buffer, size_t *lenp, loff_t *ppos); diff --git a/kernel/hung_task.c b/kernel/hung_task.c index 9328b80..0b9c169 100644 --- a/kernel/hung_task.c +++ b/kernel/hung_task.c @@ -37,7 +37,7 @@ int __read_mostly sysctl_hung_task_check_count = PID_MAX_LIMIT; */ unsigned long __read_mostly sysctl_hung_task_timeout_secs = CONFIG_DEFAULT_HUNG_TASK_TIMEOUT; -unsigned long __read_mostly sysctl_hung_task_warnings = 10; +int __read_mostly sysctl_hung_task_warnings = 10; static int __read_mostly did_panic; @@ -98,7 +98,9 @@ static void check_hung_task(struct task_struct *t, unsigned long timeout) if (!sysctl_hung_task_warnings) return; - sysctl_hung_task_warnings--; + + if (sysctl_hung_task_warnings > 0) + sysctl_hung_task_warnings--; /* * Ok, the task did not get scheduled for more than 2 minutes, diff --git a/kernel/sysctl.c b/kernel/sysctl.c index dd531a6..b50cd13 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c @@ -985,9 +985,10 @@ static struct ctl_table kern_table[] = { { .procname = "hung_task_warnings", .data = &sysctl_hung_task_warnings, - .maxlen = sizeof(unsigned long), + .maxlen = sizeof(int), .mode = 0644, - .proc_handler = proc_doulongvec_minmax, + .proc_handler = proc_dointvec_minmax, + .extra1 = &neg_one, }, #endif #ifdef CONFIG_COMPAT -- 1.8.4.2 ^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2014-01-25 8:58 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-01-23 10:56 [RFC PATCH v5 0/2] hung_task: Display every hung task warning Aaron Tomlin 2014-01-23 10:56 ` [RFC PATCH v5 1/2] sysctl: Make neg_one a standard constraint Aaron Tomlin 2014-01-25 8:48 ` Ingo Molnar 2014-01-25 8:58 ` Ingo Molnar 2014-01-23 10:56 ` [RFC PATCH v5 2/2] hung_task: Display every hung task warning Aaron Tomlin
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox