Interrupt Storm - Interrupt Mitigating

Interrupt Mitigating

There are hardware-based and software-based approaches to the problem. An example of a software-based approach, FreeBSD detects interrupt storms and masks problematic interrupts for some time in response.

The system used by NAPI is an example of the hardware-based approach: the system (driver) starts in interrupt enabled state, and the Interrupt handler then disables the interrupt and lets a thread/task handle the event(s) and then task polls the device, processing some number of events and enabling the interrupt.

Another interesting approach using hardware support is one where the device generates interrupt when the event queue state changes from "empty" to "not empty". Then, if there are no free DMA descriptors at the RX FIFO tail, the device drops the event. The event is then added to the tail and the FIFO entry is marked as occupied. If at that point entry (tail−1) is free (cleared), an interrupt will be generated (level interrupt) and the tail pointer will be incremented. If the hardware requires the interrupt be acknowledged, the CPU (interrupt handler) will do that, handle the valid DMA descriptors at the head, and return from the interrupt.

Read more about this topic:  Interrupt Storm

Famous quotes containing the word interrupt:

    Never interrupt a murderer, madame.
    Walter Reisch (1903–1963)