All the mail mirrored from lore.kernel.org
 help / color / mirror / Atom feed
* [RFC PATCH v2 0/2] hung_task: Display every hung task warning
@ 2014-01-14 23:41 atomlin
  2014-01-14 23:41 ` [RFC PATCH v2 1/2] sysctl: Make neg_one a standard constraint atomlin
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: atomlin @ 2014-01-14 23:41 UTC (permalink / raw
  To: linux-kernel; +Cc: mingo, oleg, riel, akpm

From: Aaron Tomlin <atomlin@redhat.com>

The khungtaskd thread limits how many hung task warnings it displays
at a time, when a timeout occurs. This patch allows that limit to be
set to "unlimited", by setting hung_task_warnings to -1, which will
cause khungtaskd to display information about all hung tasks.

While ULONG_MAX is practically "inf", this patch takes it one step
further. Note: The maximum is now 2^31-1 (INT_MAX) which should
hopefully be sufficient.

Rebased against v3.13-rc8.

Aaron Tomlin (2):
  sysctl: Make neg_one a standard constraint
  hung_task: Display every hung task warning

 include/linux/sched/sysctl.h | 2 +-
 kernel/hung_task.c           | 9 +++++----
 kernel/sysctl.c              | 6 ++++--
 3 files changed, 10 insertions(+), 7 deletions(-)

-- 
1.8.4.2


^ permalink raw reply	[flat|nested] 4+ messages in thread

* [RFC PATCH v2 1/2] sysctl: Make neg_one a standard constraint
  2014-01-14 23:41 [RFC PATCH v2 0/2] hung_task: Display every hung task warning atomlin
@ 2014-01-14 23:41 ` atomlin
  2014-01-14 23:41 ` [RFC PATCH v2 2/2] hung_task: Display every hung task warning atomlin
  2014-01-15  0:09 ` [RFC PATCH v2 0/2] " Andrew Morton
  2 siblings, 0 replies; 4+ messages in thread
From: atomlin @ 2014-01-14 23:41 UTC (permalink / raw
  To: linux-kernel; +Cc: mingo, oleg, riel, akpm

From: Aaron Tomlin <atomlin@redhat.com>

Add neg_one to the list of standard constraints.

Signed-off-by: Aaron Tomlin <atomlin@redhat.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] 4+ messages in thread

* [RFC PATCH v2 2/2] hung_task: Display every hung task warning
  2014-01-14 23:41 [RFC PATCH v2 0/2] hung_task: Display every hung task warning atomlin
  2014-01-14 23:41 ` [RFC PATCH v2 1/2] sysctl: Make neg_one a standard constraint atomlin
@ 2014-01-14 23:41 ` atomlin
  2014-01-15  0:09 ` [RFC PATCH v2 0/2] " Andrew Morton
  2 siblings, 0 replies; 4+ messages in thread
From: atomlin @ 2014-01-14 23:41 UTC (permalink / raw
  To: linux-kernel; +Cc: mingo, oleg, riel, akpm

From: Aaron Tomlin <atomlin@redhat.com>

The khungtaskd thread limits how many hung task
warnings it displays at a time, when a timeout
occurs. This patch allows that limit to be set
to "unlimited", by setting hung_task_warnings
to -1, which will cause khungtaskd to display
information about all hung tasks.

While ULONG_MAX is practically "inf", this
patch takes it one step further.  Note: The
maximum is now 2^31-1 (INT_MAX) which should
hopefully be sufficient.

Signed-off-by: Aaron Tomlin <atomlin@redhat.com>
---
 include/linux/sched/sysctl.h | 2 +-
 kernel/hung_task.c           | 9 +++++----
 kernel/sysctl.c              | 5 +++--
 3 files changed, 9 insertions(+), 7 deletions(-)

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..343ed70 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,11 +98,12 @@ 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,
-	 * complain:
+	 * Ok, the task did not get scheduled for a while, complain:
 	 */
 	pr_err("INFO: task %s:%d blocked for more than %ld seconds.\n",
 		t->comm, t->pid, timeout);
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] 4+ messages in thread

* Re: [RFC PATCH v2 0/2] hung_task: Display every hung task warning
  2014-01-14 23:41 [RFC PATCH v2 0/2] hung_task: Display every hung task warning atomlin
  2014-01-14 23:41 ` [RFC PATCH v2 1/2] sysctl: Make neg_one a standard constraint atomlin
  2014-01-14 23:41 ` [RFC PATCH v2 2/2] hung_task: Display every hung task warning atomlin
@ 2014-01-15  0:09 ` Andrew Morton
  2 siblings, 0 replies; 4+ messages in thread
From: Andrew Morton @ 2014-01-15  0:09 UTC (permalink / raw
  To: atomlin; +Cc: linux-kernel, mingo, oleg, riel

On Tue, 14 Jan 2014 23:41:56 +0000 atomlin@redhat.com wrote:

> The khungtaskd thread limits how many hung task warnings it displays
> at a time, when a timeout occurs. This patch allows that limit to be
> set to "unlimited", by setting hung_task_warnings to -1, which will
> cause khungtaskd to display information about all hung tasks.

The changelog provides no reason why you think this change should be
made.  This is awkward, because it means that nobody has any reason
to apply the patch!


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2014-01-15  0:10 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-01-14 23:41 [RFC PATCH v2 0/2] hung_task: Display every hung task warning atomlin
2014-01-14 23:41 ` [RFC PATCH v2 1/2] sysctl: Make neg_one a standard constraint atomlin
2014-01-14 23:41 ` [RFC PATCH v2 2/2] hung_task: Display every hung task warning atomlin
2014-01-15  0:09 ` [RFC PATCH v2 0/2] " Andrew Morton

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.