diff options
author | njl <njl@FreeBSD.org> | 2007-04-19 01:24:32 +0000 |
---|---|---|
committer | njl <njl@FreeBSD.org> | 2007-04-19 01:24:32 +0000 |
commit | 95e9f5610b146de8c256d5b3b928a80f3cfcf46d (patch) | |
tree | 84f1ee3016082bccb71d48b560e137c6b693c00e /sys/kern/kern_intr.c | |
parent | 021deab651b9dfe702f6782a0cd84160cfde4879 (diff) | |
download | FreeBSD-src-95e9f5610b146de8c256d5b3b928a80f3cfcf46d.zip FreeBSD-src-95e9f5610b146de8c256d5b3b928a80f3cfcf46d.tar.gz |
Bump the interrupt storm detection counter to 1000. My slow fileserver
gets a bogus irq storm detected when periodic daily kicks off at 3 am
and disconnects the disk. Change the print logic to print once per second
when the storm is occurring instead of only once. Otherwise, it appeared
that something else was causing the errors each night at 3 am since the
print only occurred the first time.
Reviewed by: jhb
MFC after: 1 week
Diffstat (limited to 'sys/kern/kern_intr.c')
-rw-r--r-- | sys/kern/kern_intr.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/sys/kern/kern_intr.c b/sys/kern/kern_intr.c index 38c6772..94e2672 100644 --- a/sys/kern/kern_intr.c +++ b/sys/kern/kern_intr.c @@ -83,7 +83,7 @@ void *vm_ih; static MALLOC_DEFINE(M_ITHREAD, "ithread", "Interrupt Threads"); -static int intr_storm_threshold = 500; +static int intr_storm_threshold = 1000; TUNABLE_INT("hw.intr_storm_threshold", &intr_storm_threshold); SYSCTL_INT(_hw, OID_AUTO, intr_storm_threshold, CTLFLAG_RW, &intr_storm_threshold, 0, @@ -698,11 +698,11 @@ ithread_execute_handlers(struct proc *p, struct intr_event *ie) */ if (intr_storm_threshold != 0 && ie->ie_count >= intr_storm_threshold && !(ie->ie_flags & IE_SOFT)) { - if (ie->ie_warned == 0) { + /* Report the message only once every second. */ + if (ppsratecheck(&ie->ie_warntm, &ie->ie_warncnt, 1)) { printf( - "Interrupt storm detected on \"%s\"; throttling interrupt source\n", + "interrupt storm detected on \"%s\"; throttling interrupt source\n", ie->ie_name); - ie->ie_warned = 1; } pause("istorm", 1); } else |