diff options
author | attilio <attilio@FreeBSD.org> | 2010-01-09 01:46:38 +0000 |
---|---|---|
committer | attilio <attilio@FreeBSD.org> | 2010-01-09 01:46:38 +0000 |
commit | fde84f320b44c90f431d0a4145d7b83d2a221253 (patch) | |
tree | e46dd2a25d662a40bd7324ff4489431a2403931d /sys/conf | |
parent | da19d81aaa4a2ec26f7ad15e4c609a36f868e9e0 (diff) | |
download | FreeBSD-src-fde84f320b44c90f431d0a4145d7b83d2a221253.zip FreeBSD-src-fde84f320b44c90f431d0a4145d7b83d2a221253.tar.gz |
Introduce the new kernel thread called "deadlock resolver".
While the name is pretentious, a good explanation of its targets is
reported in this 17 months old presentation e-mail:
http://lists.freebsd.org/pipermail/freebsd-arch/2008-August/008452.html
In order to implement it, the sq_type in sleepqueues is mandatory and not
only compiled along with INVARIANTS option. Additively, a new sleepqueue
function, sleepq_type() is added, returning the type of the sleepqueue
linked to a wchan.
Three new sysctls are added in order to configure the thread:
debug.deadlkres.slptime_threshold
debug.deadlkres.blktime_threshold
debug.deadlkres.sleepfreq
rappresenting the thresholds for sleep and block time that will lead to
a deadlock matching (when exceeded), while the sleepfreq rappresents the
number of seconds between 2 consecutive thread runnings.
In order to enable the deadlock resolver thread recompile your kernel
with the option DEADLKRES.
Reviewed by: jeff
Tested by: pho, Giovanni Trematerra
Sponsored by: Nokia Incorporated, Sandvine Incorporated
MFC after: 2 weeks
Diffstat (limited to 'sys/conf')
-rw-r--r-- | sys/conf/NOTES | 5 | ||||
-rw-r--r-- | sys/conf/options | 1 |
2 files changed, 6 insertions, 0 deletions
diff --git a/sys/conf/NOTES b/sys/conf/NOTES index b57b50f..8e949b5 100644 --- a/sys/conf/NOTES +++ b/sys/conf/NOTES @@ -2531,6 +2531,11 @@ options BOOTP_BLOCKSIZE=8192 # Override NFS block size options SW_WATCHDOG # +# Add the software deadlock resolver thread. +# +options DEADLKRES + +# # Disable swapping of stack pages. This option removes all # code which actually performs swapping, so it's not possible to turn # it back on at run-time. diff --git a/sys/conf/options b/sys/conf/options index 75f69c2..84bfbd1 100644 --- a/sys/conf/options +++ b/sys/conf/options @@ -72,6 +72,7 @@ COMPAT_FREEBSD6 opt_compat.h COMPAT_FREEBSD7 opt_compat.h COMPILING_LINT opt_global.h CY_PCI_FASTINTR +DEADLKRES opt_watchdog.h DIRECTIO FULL_PREEMPTION opt_sched.h IPI_PREEMPTION opt_sched.h |