RE: NAPI vs. interrupts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> NAPI driver _always_ does
> 	ack some irqs
> 	mask irqs
> 	ack some more irqs
> 	process events
> 	unmask irqs

e1000+NAPI is this path.

> The purpose of this email is to solicit suggestions to 
> develop a strategy to fix what I believe is a problem with NAPI.
> 
> Here are some comments of mine:
> 
> 1) Can this problem be alleviated entirely without driver 
> changes?  For example, would it be reasonable to do 
> pkts-per-second sampling in the net core, and enable software 
> mitigation based on that?
> 
> 2) Implement hardware mitigation in addition to NAPI.  Either 
> the driver does adaptive sampling, or simply hard-locks 
> mitigation settings at something that averages out to N pkts 
> per second.

I've tried something similar to this while playing around with e1000
recently.  Using ITR (InterruptThrottleRate), dial in a max intr/sec
rate of say 4000 intr/sec, and then just call netif_rx_schedule() for
each interrupt.  Don't mask/unmask interrupts.  If already polling,
netif_rx_schedule does nothing.  The code differences between the NAPI
path and non-NAPI path was minimal, so I liked that, and your worst case
is gone.  If you look at the average size of the Rx packets, you could
fine tune ITR to get a pkt/intr rate to balance your quota to try to
maximize the amount of time spent polling, but this is too fancy for my
taste.  Anyway, worst case, 2*4000 PIO writes/sec was the savings, but I
can't say I could measure a difference.
 
-scott
-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux