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?
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?