Date: Sat, 12 Sep 2009 15:42:26 +0200 From: Luigi Rizzo <rizzo@iet.unipi.it> To: rihad <rihad@mail.ru> Cc: freebsd-net@freebsd.org Subject: Re: [POLLING] strange interrupt/system load Message-ID: <20090912134226.GD46135@onelab2.iet.unipi.it> In-Reply-To: <4AAB4D56.30207@mail.ru> References: <4AAB4D56.30207@mail.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, Sep 12, 2009 at 12:27:18PM +0500, rihad wrote: > The box experiences ~230 mbit/s traffic flow through it. I've doubled > some sysctls after reading polling(4): > kern.polling.each_burst=10 # was: 5 > kern.polling.burst_max=350 # was: 150 > > FreeBSD 7.2-RELEASE-p3 amd64 > HZ=1000 > > Now for the fun part. > > With kern.polling.idle_poll = 1 top shows: > CPU: 0.0% user, 0.0% nice, 26.9% system, 3.1% interrupt, 70.0% idle > ~8000 interrupts/s total according to systat -vmstat: > 1999 cpu0: time > 2000 cpu1: time > 1999 cpu2: time > 1999 cpu3: time > > With kern.polling.idle_poll = 0 top shows: > CPU: 0.0% user, 0.0% nice, 0.0% system, 13.9% interrupt, 86.0% idle > Still the same ~8000 clock interrupts/s. > > Under both scenarios polling is enabled on both em0 and em1 through > ifconfig. > > > 1) Why is the interrupt load relatively high with polling enabled? > 2) How come 13.9% interrupts are not also in the first scenario if their > total rate is the same (~8000)? Polling enabled means that at every tick (and in the idle loop if you also have idle_poll enabled) you are checking the status of the interface even if there is no traffic. The polling handler is probably accounted for as 'interrupt'. The load you see shoud not be too different to what you see without polling. Enabling idle_poll moves part of the work to the idle loop(s) which are accounted as 'system' time. What happens here is that part of the work is taken away from the polling handlers that run on each tick so you see a reduction on the interrupt time, whereas as Bruce said, one CPU is using 100% of its time (or 25% of the total work capacity) to run the idle_poll loop. cheers luigi
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090912134226.GD46135>