Skip site navigation (1)Skip section navigation (2)
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>