Intel 82574L Gigabit Ethernet Controller

Shtorm admin at shtorm.com
Sat Jul 10 15:27:45 UTC 2010


On Sat, 2010-07-10 at 04:48 +1000, Ian Smith wrote:
> On Fri, 9 Jul 2010, Ryan Stone wrote:
> 
>  > No, defining EM_WATCHDOG as 10 * hz should mean that the watchdog
>  > expires after 10 seconds no matter what your kern.hz is.  hz is set to
>  > the number of ticks in a second.
> 
> Ok, one more probably wild punt .. Shtorm you say HZ=4000, giving:
> 
> ===
> And here is vmstat -i
> interrupt                          total       rate
> irq16: uhci0                        2673          2
> irq18: ehci0 uhci5                     2          0
> irq19: uhci2 uhci4                    70          0
> irq23: uhci3 ehci1                  8835          9
> cpu0: timer                      3743479       3957
> irq256: em0                       662219        700
> irq257: em0                       717531        758
> irq259: em0                        12142         12
> irq260: em0                         6100          6
> irq261: em1                       694169        733
> irq262: em1                       217388        229
> irq264: em1                       463023        489
> irq265: em1                           11          0
> cpu1: timer                      3743411       3957
> cpu6: timer                      3743408       3957
> cpu7: timer                      3743407       3957
> cpu4: timer                      3743408       3957
> cpu5: timer                      3743407       3957
> cpu3: timer                      3743408       3957
> cpu2: timer                      3743409       3957
> Total                           32731500      34599
> ===
> 
> a little more variant from 4000 than expected?  Originally:
> 
> ===
> but vmstat -i shows only one pair is used
> %vmstat -i
> interrupt                          total       rate
> irq1: atkbd0                         391          0
> irq18: ehci0 uhci5                     2          0
> irq19: uhci2 uhci4                    27          0
> irq23: uhci3 ehci1                  8463          0
> cpu0: timer                    107412943       7864
> irq256: em0                     93311951       6832
> irq257: em0                     90479067       6624
> irq260: em0                            2          0
> irq261: em1                     92966894       6806
> irq262: em1                     80298240       5879
> irq265: em1                            1          0
> cpu1: timer                    107412607       7864
> cpu2: timer                    107412785       7864
> cpu3: timer                    107412830       7864
> cpu5: timer                    107413210       7864
> cpu4: timer                    107413389       7864
> cpu7: timer                    107407337       7864
> cpu6: timer                    107413132       7864
> Total                         1216363271      89058
> ===
> 
> Was that with HZ=8000 ?  Or what?  In any case, em interrupt rates were 
> a whole lot higher then - but maybe it was just a lot busier on the net?
> 
> HZ=4000 ticks are 250ns, not 25ms.
> 
> Seems like you're not lacking horsepower .. unless you're using POLLING 
> (not indicated) or, say, dummynet pipes needing finer-grained output 
> queue scheduling, it might be worth trying the default HZ=1000 ?
> 
> Just curious along similar lines: what says sysctl kern.timecounter ?
> 
> cheers, Ian
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"

You are rigth, Ian, I'm using dumminet for traffic shaping, arount 2000
dynamic pipes (src and dst mask) with speed from 256 kbit up to 100
mbit. I've played with kern.hz a bit setting it to different values
between 1000 and 8000, 4000 gives best for my traffic load, two logs
taken with hz=4000 and hz=8000. And no, I'm not using polling, one of
the great features of intell network cards is interrupt moderation.
There is sysctls for this em driver:

%sysctl dev.em.0 | grep \[tr\]x
dev.em.0.rx_int_delay: 200
dev.em.0.tx_int_delay: 200
dev.em.0.rx_abs_int_delay: 500
dev.em.0.tx_abs_int_delay: 500

I've tried different values, more delay gives less context switches and
reduces cpu load in case of packet forwarding a lot. And you can see I'm
getting watchdog timeouts regardless of this settings, even tried
everything default with empty loader.conf. 

Sorry for this, next time will do one thing at a time, not a few in
parallel.

Thank you.





More information about the freebsd-net mailing list