Hi, On Tue, 22 Feb 2011 18:09:32 +0100 Patrick Lamaiziere <patf...@davenulle.org> wrote: >| I'm using two ethernet cards Intel 1000/PRO quad ports (gigabit) on a >| firewall (one fiber and one copper). >| >| The problem is that we don't get more than ~320 Mbits/s of bandwith >| beetween the internal networks and internet (gigabit). >| >| As far I can see, on load there is a number of "Ierr" on the interface >| connected to Internet (between 1% to 5%). >| >| Also the interrupt rate on this card is around ~7500 (using systat). In >| the em(4) driver, there is a limitation of the interrupt rate at 8000/s. >| >| if_em.h >| /* >| * MAX_INTS_PER_SEC (ITR - Interrupt Throttle Register) >| * The Interrupt Throttle Register (ITR) limits the delivery of >| interrupts >| * to a reasonable rate by providing a guaranteed inter-interrupt delay >| * between interrupts asserted by the Ethernet controller. >| */ >| #define MAX_INTS_PER_SEC 8000 >| >| Do you think I can increase this value? The interrupt rate of the >| machine is at max ~60% (top).
We've got same problems (on a routeur, not a firewall). Increasing MAX_INTS_PER_SEC to 24000 increased bandwith and lowered packet loss. Our cards are "Intel PRO/1000 (82576)" and "Intel PRO/1000 FP (82576)". We still have Ierr (but lower count). I don't understand why we still get errors with a 90+%Idle system. I've made some calculations and for a 1Gbps link with 600 Bytes packets, we have to process 208 334 pps. With a 40KB RX buffer on nic (40000/600=66 packets max in buffer) we only need 208334/66=3157 interrupts/s so 24000 and even 8000 interrupts/s should be enough :-( If someone have an explanation... Manuel