Maximum interrupts per second

Somewhere in the course of my travels in developing NT device drivers I came
across one of those magic numbers that represents the maximum number of
interrupts per second: 10,000. Does NT begin governing interrupts once
interrupts exceeds 10K per second, and if so how does this scale across
multiple CPU’s? It seems that we have a customer that wants to use 20 PCI
fibrechannel adapters for a large storage system, and is expecting on the
order of 200,000 interrupts per second. Will NT or Win2K choke when it only
has about 5 microseconds between interrupts?

That doesn’t make any sense to me. A single FC controller can handle 120
odd devices each. Does he really need to connect to more than 2000 devices
on a single system ? Is it possible to use a Fibre-switch (eg
http://www.vixel.com) to reduce the number of controllers required ?

Regards,

Paul Bunn, UltraBac.com, 425-644-6000
Microsoft MVP - WindowsNT/2000
http://www.ultrabac.com

-----Original Message-----
From: Gary Little [mailto:xxxxx@delphieng.com]
Sent: Thursday, June 01, 2000 8:14 AM
To: NT Developers Interest List
Subject: Maximum interrupts per second

Somewhere in the course of my travels in developing NT device drivers I
came across one of those magic numbers that represents the maximum number of
interrupts per second: 10,000. Does NT begin governing interrupts once
interrupts exceeds 10K per second, and if so how does this scale across
multiple CPU’s? It seems that we have a customer that wants to use 20 PCI
fibrechannel adapters for a large storage system, and is expecting on the
order of 200,000 interrupts per second. Will NT or Win2K choke when it only
has about 5 microseconds between interrupts?

I’m no expert here, but I heard somewhere that NT cannot respond to that
many interrupts per second. It’s something to do with the latency in the
interrupt dispatch logic (HW or SW I’m not sure). I may have something to
do with the actual PCI bus(es).

Greg

-----Original Message-----
From: xxxxx@lists.osr.com
[mailto:xxxxx@lists.osr.com] On Behalf Of Gary Little
Sent: Thursday, June 01, 2000 10:14 AM
To: NT Developers Interest List
Subject: Maximum interrupts per second

Somewhere in the course of my travels in developing NT device drivers I
came across one of those magic numbers that represents the maximum number
of interrupts per second: 10,000. Does NT begin governing interrupts once
interrupts exceeds 10K per second, and if so how does this scale across
multiple CPU’s? It seems that we have a customer that wants to use 20 PCI
fibrechannel adapters for a large storage system, and is expecting on the
order of 200,000 interrupts per second. Will NT or Win2K choke when it
only has about 5 microseconds between interrupts?

I’ve dealt with very high interrupt rates before, and it will handle it
without crashing, but of course, you’ll eventually end up missing interrupts
and the system will become completely unresponsive. Say goodbye to anything
running in user mode or at passive level, and if your rate is really high,
bye bye to anything at dispatch mode as well. Anything above 5,000 is high,
but I’ve seen it go as high as 10,000 before.

We redesigned our drivers to do “interrupt throttling”, such that it kept
track of the interrupt rate, and when it went above 1000 interrupts per
second, it would disable interrupts from the device and instead switch to a
timer-poll method. It worked out very well, and we ended up getting around
twice the throughput while pegging the CPU just as much.

If you have control over your drivers, I’d recommend looking into that.

A number of Ethernet cards now do this, but I don’t know how common it is
with other devices.