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
This commit is contained in:
Nate Lawson 2007-04-19 01:24:32 +00:00
parent 2ea4228214
commit 0ae62c18a0
2 changed files with 6 additions and 5 deletions

View File

@ -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

View File

@ -74,7 +74,8 @@ struct intr_event {
void (*ie_enable)(void *);
int ie_flags;
int ie_count; /* Loop counter. */
int ie_warned; /* Warned about interrupt storm. */
int ie_warncnt; /* Rate-check interrupt storm warns. */
struct timeval ie_warntm;
};
/* Interrupt event flags kept in ie_flags. */