What is "Interrupts" process and why it so loves my CPU?

I have windows XP SP3 on Intel Core Duo 2GHz. The "Interrupts" process, according to the Process Explorer, continuously take 30-40% CPU. Is it normal?


Solution 1:

In very general terms an interrupt is generated by an IO device (such as a disk controller, network card, USB controller etc.) when it wants some attention from the processor - it's basically shouting 'Hey, can I have a bit of your time please!'.

The processor has its own jobs to be getting on with so when it gets an interrupt it has to stop what it's doing and deal with the device's requirements to move data or whatever. This shouldn't be too much work but with modern adapter cards dealing with lots of data they can generate a lot of interrupts per second for the processor. Traditionally computers had only a single processor so many operating systems never thought to spread out this interrupt handling work to more than just the first processor - this is still the case now, one network card CAN flood 'core 0' of even the most modern multi-core processor if the operating system won't share this workload.

There are a number of ways to get around this, one is called 'interrupt-coalescence' this is a feature of a network card that will bunch up a group of interrupts and send them through to the processor as a single one - this adds network latency but can save a lot of processor overhead. Another is called 'receive side scaling' that, in general terms, shares out the work of dealing with interrupts to more than just 'core 0' - lowering the emphasis of 'core 0' (which is still stuck doing a lot of other core OS functions in all but the most modern operating systems).

There's another cool function that doesn't have much to do with interrupts but can improve overall server performance called 'TCP offload' - this lets the network card do some of the work that the processor would normally do. All of these three functions need to be supported by the network adapter, the BIOS and the operating system, otherwise it doesn't work - as a reference take a look at THIS document from Microsoft, it explains things in much more detail.

I hope this helps.