Subject: RE: FW: Submission for S2io 10GbE driver

From: "Leonid Grossman" <[email-masked]>
Date: Sat, 24 Jan 2004 12:04:51 -0800

> -----Original Message-----
> From: jamal [mailto:[email-masked]] 
> Sent: Saturday, January 24, 2004 10:00 AM
> To: Leonid Grossman
> Cc: [email-masked]
> Subject: RE: FW: Submission for S2io 10GbE driver
> 
> 
> On Sat, 2004-01-24 at 00:10, Leonid Grossman wrote:
> 
> > > - Adaptive Interrupt Coalescence
> > 
> > There are several interrupt schemes, in the utilization scheme the 
> > device can be programmed to automatically adjust interrupt 
> rate based 
> > upon link utilization, independently for tx and rx interrupts. For 
> > instance, if the utilization is in single percentage digits 
> then the 
> > device can be programmed to get an interrupt per every packet since 
> > interrupt rate doesn't matter much; If the utilization gets 
> closer to 
> > 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
>