diff options
author | Mandeep Singh Baines <msb@google.com> | 2009-01-15 14:08:40 -0500 |
---|---|---|
committer | Ingo Molnar <mingo@elte.hu> | 2009-01-16 08:06:04 -0500 |
commit | e162b39a368f0401e41b558f430c354d12a85b37 (patch) | |
tree | 3fb7e4d48f398d62e5074e7e3dd183cc54f59820 /kernel/sysctl.c | |
parent | c903ff837909ccada51243307d4239f86af40179 (diff) |
softlockup: decouple hung tasks check from softlockup detection
Decoupling allows:
* hung tasks check to happen at very low priority
* hung tasks check and softlockup to be enabled/disabled independently
at compile and/or run-time
* individual panic settings to be enabled disabled independently
at compile and/or run-time
* softlockup threshold to be reduced without increasing hung tasks
poll frequency (hung task check is expensive relative to softlock watchdog)
* hung task check to be zero over-head when disabled at run-time
Signed-off-by: Mandeep Singh Baines <msb@google.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sysctl.c')
-rw-r--r-- | kernel/sysctl.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/kernel/sysctl.c b/kernel/sysctl.c index 596dc31a7116..2481ed30d2b5 100644 --- a/kernel/sysctl.c +++ b/kernel/sysctl.c | |||
@@ -805,6 +805,19 @@ static struct ctl_table kern_table[] = { | |||
805 | .extra1 = &neg_one, | 805 | .extra1 = &neg_one, |
806 | .extra2 = &sixty, | 806 | .extra2 = &sixty, |
807 | }, | 807 | }, |
808 | #endif | ||
809 | #ifdef CONFIG_DETECT_HUNG_TASK | ||
810 | { | ||
811 | .ctl_name = CTL_UNNUMBERED, | ||
812 | .procname = "hung_task_panic", | ||
813 | .data = &sysctl_hung_task_panic, | ||
814 | .maxlen = sizeof(int), | ||
815 | .mode = 0644, | ||
816 | .proc_handler = &proc_dointvec_minmax, | ||
817 | .strategy = &sysctl_intvec, | ||
818 | .extra1 = &zero, | ||
819 | .extra2 = &one, | ||
820 | }, | ||
808 | { | 821 | { |
809 | .ctl_name = CTL_UNNUMBERED, | 822 | .ctl_name = CTL_UNNUMBERED, |
810 | .procname = "hung_task_check_count", | 823 | .procname = "hung_task_check_count", |
@@ -820,7 +833,7 @@ static struct ctl_table kern_table[] = { | |||
820 | .data = &sysctl_hung_task_timeout_secs, | 833 | .data = &sysctl_hung_task_timeout_secs, |
821 | .maxlen = sizeof(unsigned long), | 834 | .maxlen = sizeof(unsigned long), |
822 | .mode = 0644, | 835 | .mode = 0644, |
823 | .proc_handler = &proc_doulongvec_minmax, | 836 | .proc_handler = &proc_dohung_task_timeout_secs, |
824 | .strategy = &sysctl_intvec, | 837 | .strategy = &sysctl_intvec, |
825 | }, | 838 | }, |
826 | { | 839 | { |