Thread (33 messages) 33 messages, 8 authors, 2004-02-16

RE: FW: Submission for S2io 10GbE driver

From: Leonid Grossman <hidden>
Date: 2004-01-24 20:04:51

-----Original Message-----
From: jamal [mailto:hadi@cyberus.ca] 
Sent: Saturday, January 24, 2004 10:00 AM
To: Leonid Grossman
Cc: netdev@oss.sgi.com
Subject: RE: FW: Submission for S2io 10GbE driver


On Sat, 2004-01-24 at 00:10, Leonid Grossman wrote:
quoted
quoted
- Adaptive Interrupt Coalescence
There are several interrupt schemes, in the utilization scheme the 
device can be programmed to automatically adjust interrupt 
rate based 
quoted
upon link utilization, independently for tx and rx interrupts. For 
instance, if the utilization is in single percentage digits 
then the 
quoted
device can be programmed to get an interrupt per every packet since 
interrupt rate doesn't matter much; If the utilization gets 
closer to 
quoted
100%, it will probably make sense to program device for, say, one 
interrupt per 200 packets - the number will somewhat vary for 
different systems and packet sizes.
How effective is this?
Today with a legacy pin iterrupts it's reasonably efective, and I have
higher hopes for MSI and MSI-X when systems and the OS starts supporting
it.
Example you could easily fill up a link with larger packets (less
interupts) than with smaller packets (more interupts). The 
latter overloads the system more. 
getting feedback from the system (which you can in Linux) and 
adjusting the rate that way would be more effective it seems. 
These schemes could be complimentary, right now we do see that different
thresholds need to be programmed for regular and Jumbo traffic.

One thing I did not mention is that our ASIC supports several
utilization thresholds on per interrupt basis (up to 64 MSI-X
interrupts). There are also independent tx and rx queues, and each can
have it's own interrupt. There is a pretty large number of parameters
that traffic could be steered upon, packet size is one of them.

So, if you want to have different interrupt moderation schemes for
different packet sizes, you just need to steer packets to separate
queues based upon size, and then assign a separate MSI interrupt to
these queues and set different utilization thresholds for different
interrupts. At any given workload, you will be getting interrupts at
different rate for small and for big packets.

Anyway, you are right there are many interrupt moderation schemes that
host driver can deploy, our goal was to provide a flexible hardware
assist. 

Thanks, Leonid


Adjusting interupt rates based on a moving window averaging 
of the packet arrival rate would also be useful.

cheers,
jamal
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help