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 596dc31a711..2481ed30d2b 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 | { |
