On Tue, 30 Dec 2003, Manuel Kasper wrote:
> Basically, it seems that when pushing data at maximum speed (Ethernet
> -> Ethernet) through a net45xx that runs FreeBSD (m0n0wall actually),
> the CPU gets so fed up with handling all the interrupts (and packet
> filtering/NAT too) that the watchdogd process doesn't get any CPU time
> to tickle the watchdog anymore. Raising the priority of the process
> doesn't help either.
Ok - so we have a situation where userland essentially does not get any
CPU for over 30 seconds ? Sounds like indeed you -must- use polling:
> Au contraire - polling mode actually "solved" the problem by leaving
> watchdogd enough CPU time even at max. throughput.
Good - as you want userland to get a few cycles at least every 5 seconds
to keep things like userland dhcp, ntp and named happy. If not you may be
better off detecting a 20-60 second no-userland-cycles and at the very
least log it (as to at least least give the user a chance to understand
where mbuf or accept() queues getting too large is coming from).