Date: Sun, 06 Jul 2008 18:56:12 -0400 From: Sergey Babkin <babkin@verizon.net> To: Murray Taylor <MTaylor@bytecraft.com.au> Cc: freebsd-hackers@freebsd.org Subject: Re: massive interrupt storm Message-ID: <48714D8C.2AD7286D@verizon.net> References: <04E232FDCD9FBE43857F7066CAD3C0F15B81D2@svmailmel.bytecraft.internal>
next in thread | previous in thread | raw e-mail | index | archive | help
Murray Taylor wrote: > > Hi all, > > We have just purchased some servers with a view to > using them as firewalls within our WAN, and have discovered that > they are suject to a massive interrupt storm on IRQ17. > > systat -v is showing 59000 -> 63000 interrupts continuously > on this IRQ, and 90%->98% Interrupt CPU usage One typical reason for "interrupt storms" is this: Some device has been initialized by BIOS and has indicated an interrupt but there is no driver in the OS to handle this interrupt. PCI allows sharing of the interrupts, i.e. multiple devices show their interrupts on the same IRQ line. The interrupt is signalled by level, i.e. if any device on this IRQ has an interrupt pending, it would pull the line low. OS has no way to tell which one, other than by trying all the drivers for the devices sitting on this line. Once the driver has found that its device is the one signalling interrupt, it services it, cleans the device state, and the device lets go of the IRQ line. The trouble starts when there is some device for which there is no driver. OS runs its interrupt handler, polls each driver, each of them says "nope, not mine", teh interrupt handler exits and gets called again right away. The fix is to disable the unsupported devices in BIOS or at least collect them on some IRQ line that is not used by any supported devices. -SB
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?48714D8C.2AD7286D>