* [RFC PATCH 0/2] hung_task: Display every hung task warning
@ 2014-01-13 17:14 atomlin
2014-01-13 17:14 ` [RFC PATCH 1/2] sysctl: Make neg_one a standard constraint atomlin
2014-01-13 17:14 ` [RFC PATCH 2/2] hung_task: Display every hung task warning atomlin
0 siblings, 2 replies; 6+ messages in thread
From: atomlin @ 2014-01-13 17:14 UTC (permalink / raw)
To: linux-kernel; +Cc: mingo, oleg, riel, akpm
From: Aaron Tomlin <atomlin@redhat.com>
Enable hung_task_warnings to display every hung task warning, when
set to -1. While ULONG_MAX is practically "unlimited", this patch
takes it one step further. Note: The maximum is now 2^31-1 which
should (hopefully) be sufficient.
Please let me know your thoughts.
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] 6+ messages in thread
* [RFC PATCH 1/2] sysctl: Make neg_one a standard constraint
2014-01-13 17:14 [RFC PATCH 0/2] hung_task: Display every hung task warning atomlin
@ 2014-01-13 17:14 ` atomlin
2014-01-14 14:13 ` Rik van Riel
2014-01-13 17:14 ` [RFC PATCH 2/2] hung_task: Display every hung task warning atomlin
1 sibling, 1 reply; 6+ messages in thread
From: atomlin @ 2014-01-13 17:14 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] 6+ messages in thread
* [RFC PATCH 2/2] hung_task: Display every hung task warning
2014-01-13 17:14 [RFC PATCH 0/2] hung_task: Display every hung task warning atomlin
2014-01-13 17:14 ` [RFC PATCH 1/2] sysctl: Make neg_one a standard constraint atomlin
@ 2014-01-13 17:14 ` atomlin
2014-01-14 14:13 ` Rik van Riel
1 sibling, 1 reply; 6+ messages in thread
From: atomlin @ 2014-01-13 17:14 UTC (permalink / raw)
To: linux-kernel; +Cc: mingo, oleg, riel, akpm
From: Aaron Tomlin <atomlin@redhat.com>
Enable hung_task_warnings to display every hung
task warning when set to -1.
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] 6+ messages in thread
* Re: [RFC PATCH 2/2] hung_task: Display every hung task warning
2014-01-13 17:14 ` [RFC PATCH 2/2] hung_task: Display every hung task warning atomlin
@ 2014-01-14 14:13 ` Rik van Riel
2014-01-14 16:33 ` Ingo Molnar
0 siblings, 1 reply; 6+ messages in thread
From: Rik van Riel @ 2014-01-14 14:13 UTC (permalink / raw)
To: atomlin, linux-kernel; +Cc: mingo, oleg, akpm
On 01/13/2014 12:14 PM, atomlin@redhat.com wrote:
> From: Aaron Tomlin <atomlin@redhat.com>
>
> Enable hung_task_warnings to display every hung
> task warning when set to -1.
>
> Signed-off-by: Aaron Tomlin <atomlin@redhat.com>
Aaron and I talked on IRC, and after some talking these patches
now make sense to me :)
The kernel apparently limits how many hung task warnings it
will display at a time, when a timeout occurs. Aaron's patch
allows that limit to be set to "unlimited", which will cause
the kernel to display info about all hung tasks.
Reviewed-by: Rik van Riel <riel@redhat.com>
--
All rights reversed
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [RFC PATCH 1/2] sysctl: Make neg_one a standard constraint
2014-01-13 17:14 ` [RFC PATCH 1/2] sysctl: Make neg_one a standard constraint atomlin
@ 2014-01-14 14:13 ` Rik van Riel
0 siblings, 0 replies; 6+ messages in thread
From: Rik van Riel @ 2014-01-14 14:13 UTC (permalink / raw)
To: atomlin, linux-kernel; +Cc: mingo, oleg, akpm
On 01/13/2014 12:14 PM, atomlin@redhat.com wrote:
> From: Aaron Tomlin <atomlin@redhat.com>
>
> 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>
--
All rights reversed
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [RFC PATCH 2/2] hung_task: Display every hung task warning
2014-01-14 14:13 ` Rik van Riel
@ 2014-01-14 16:33 ` Ingo Molnar
0 siblings, 0 replies; 6+ messages in thread
From: Ingo Molnar @ 2014-01-14 16:33 UTC (permalink / raw)
To: Rik van Riel; +Cc: atomlin, linux-kernel, oleg, akpm
* Rik van Riel <riel@redhat.com> wrote:
> On 01/13/2014 12:14 PM, atomlin@redhat.com wrote:
> > From: Aaron Tomlin <atomlin@redhat.com>
> >
> > Enable hung_task_warnings to display every hung
> > task warning when set to -1.
> >
> > Signed-off-by: Aaron Tomlin <atomlin@redhat.com>
>
> Aaron and I talked on IRC, and after some talking these patches
> now make sense to me :)
>
> The kernel apparently limits how many hung task warnings it
> will display at a time, when a timeout occurs. Aaron's patch
> allows that limit to be set to "unlimited", which will cause
> the kernel to display info about all hung tasks.
The changelog needs to be updated with such kind of descriptive
information.
Thanks,
Ingo
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2014-01-14 16:33 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-13 17:14 [RFC PATCH 0/2] hung_task: Display every hung task warning atomlin
2014-01-13 17:14 ` [RFC PATCH 1/2] sysctl: Make neg_one a standard constraint atomlin
2014-01-14 14:13 ` Rik van Riel
2014-01-13 17:14 ` [RFC PATCH 2/2] hung_task: Display every hung task warning atomlin
2014-01-14 14:13 ` Rik van Riel
2014-01-14 16:33 ` Ingo Molnar
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.