Polling and kern.polling.idle_poll

Larry Baird lab at gta.com
Tue Jun 30 18:27:12 UTC 2009


A while back I upgraded some old gateways from FreeBSD 4.x to FreeBSD 6.x. 
I thought the upgrade had went smoothly, but a while later I started having
users complaining about throughput.  Luckly I still had a backup of the
FreebSD 4.x install.  Did some throughput tests with iperf.  Low and behold
4.x appeared to have twice the throughput.  After lots of experimenting I
determined that turning off polling fixed the issue.  So I started digging
through the kernel code to see what had changed in the polling logic. 
Finally arived at the fact that "kern.polling.idle_poll" defaults to 1 in
4.x and 0 in 6.x and above.  Turning polling back on with idle-poll enabled
fixed the performance issue.

The man page for polling states:
    kern.polling.idle_poll
	 Controls if polling is enabled in the idle loop.  There are no
	 reasons (other than power saving or bugs in the scheduler's han-
	 dling of idle priority kernel threads) to disable this.

So why is it now disabled by default?  Looking back through cvs the
change was made by Luigi way back in August of 2002.  

-- 
------------------------------------------------------------------------
Larry Baird                        | http://www.gta.com
Global Technology Associates, Inc. | Orlando, FL
Email: lab at gta.com                 | TEL 407-380-0220, FAX 407-380-6080


More information about the freebsd-net mailing list