[vortex] Why so many IRQ/sec with 3c905c (Tornado) card?

Donald Becker becker@scyld.com
Mon Jun 24 15:58:02 2002


On Sat, 22 Jun 2002, Richard Ellis wrote:

> > If you are sharing the IRQ line with other device the interrupt rate
> > is unpredictable, but should be less than the sum of the individual
> > interrupt rates due to coincidental sharing.
> >
> > You can reduce the interrupt rate, at the cost of increased latency.
>
> I ran a test this morning to determine what the IRQ/packet rate was.
>
> The results came out close enough to 1 IRQ per packet TX/RX to basically
> be one IRQ per packet.  The number of IRQ's was actually about 23,000
> lower than the number of packets transmitted and received, so for some
> situations, one IRQ handled more than one packet.
>
> For curiosity's sake, what settings would be adjusted to reduce the
> interrupt rate?

Compile with -Dtx_interrupt_mitigation=1

The Tx mitigation could be improved by changing the code to reduce the
chance of draining the Tx queue with
#if defined(tx_interrupt_mitigation)
-		prev_entry->status &= cpu_to_le32(~TxIntrUploaded);
+		if (vp->cur_tx - vp->dirty_tx != MIN(8, TX_QUEUE_LEN-2))
+			prev_entry->status &= cpu_to_le32(~TxIntrUploaded);
#endif

You could also add the following change at line 1813

-		if (status & DownComplete) {
+		if ((status & DownComplete) ||
+		    (vp->capabilities & CapNoTxLength)) {


I don't suggest any Rx interrupt mitigation, as it will increase Rx
latency.

-- 
Donald Becker				becker@scyld.com
Scyld Computing Corporation		http://www.scyld.com
410 Severn Ave. Suite 210		Second Generation Beowulf Clusters
Annapolis MD 21403			410-990-9993