# if_bridge performance



## michelem (Feb 7, 2009)

I have a setup with a bridge0 (if_bridge) running between members vr0 and vr1. The box runs a FreeBSD 7.1-RELEASE on a Geode LX800 processor. I observed a surprising demand of CPU when enabling the bridge. I enabled polling on vr0 and vr1 in the hope of mitigating this effect, expecting to observe a narrower variance in CPU load (sligtly more in idle, visibly less on peaks).
Instead, I practically observe a (steady) impressive load on the CPU while in idle, and a higher load on peaks.

This is what top reports in either case:

Without polling:
traffic ~ 100mbps
CPU:  0.0% user,  0.0% nice,  1.2% system, 57.1% interrupt, 41.7% idle

idle traffic
CPU:  0.0% user,  0.0% nice,  1.9% system,  0.0% interrupt, 98.1% idle


With polling:
traffic ~ 100mbps (polling)
CPU:  0.0% user,  0.0% nice,  1.2% system, 58.7% interrupt, 40.2% idle

idle traffic
CPU:  0.0% user,  0.0% nice,  0.8% system,  7.4% interrupt, 91.8% idle


I have these sysctl settings:
kern.clockrate: { hz = 1000, tick = 1000, profhz = 1024, stathz = 128 }
kern.polling.idlepoll_sleeping: 1
kern.polling.stalled: 0
kern.polling.suspect: 2
kern.polling.phase: 0
kern.polling.enable: 0
kern.polling.handlers: 2
kern.polling.residual_burst: 0
kern.polling.pending_polls: 0
kern.polling.lost_polls: 8
kern.polling.short_ticks: 208
kern.polling.reg_frac: 20
kern.polling.user_frac: 50
kern.polling.idle_poll: 0
kern.polling.each_burst: 5
kern.polling.burst_max: 150
kern.polling.burst: 150


I'm particularly impressed to see almost 10% of the CPU taken when the traffic is totally idle if POLLING is on. Ideas for the possible causes of this behavior, and how to improve the performance?


----------



## brd@ (Feb 8, 2009)

You should probably ask this on the freebsd-net mailing list. This is a bit advanced for the forum.


----------

