too many open file descriptors messages since bind 9.4.2-P1 (port dns94)

Julian Elischer julian at elischer.org
Tue Jul 15 23:19:15 UTC 2008


Bakul Shah wrote:
> On Tue, 15 Jul 2008 15:39:09 PDT JINMEI Tatuya / =?ISO-2022-JP?B?GyRCP0BMQEMjOkgbKEI=?= <Jinmei_Tatuya at isc.org>  wrote:
>> At Tue, 15 Jul 2008 15:12:31 -0700,
>> Bakul Shah <bakul at bitblocks.com> wrote:
>>
>>>> Besides, I guess that the P1 versions severely suffer from heavy
>>>> overhead of select(2) when it regularly opens more than 1000 sockets.
>>>> Even if 'too many open file' messages are gone, many users won't
>>>> accept the increased load due to the overhead.  Beta versions use
>>>> kqueue, eliminating the fundamental overhead as well as the (too low)
>>>> limitation of # of descriptors.
>>> Or more portably you can use poll(2).
>> I've not played with poll(2) in BIND9, but as far as I understand it,
>> it doesn't solve the fundamental overhead issue here.  For example,
>> the application should examine all possible descriptors even if only a
>> few of them are readable.
> 
> IIRC, when poll() returns n, you only look at the first n
> values in the pollfd array so it is a win when you expect a
> very small number of fds to be ready.  In the select case you
> have to test the bit array until you see the last ready fd.
> 
>> Anyway, since this is a FreeBSD specific list, I believe we can safely
>> assume the existence of kqueue, unless we are talking about a very old
>> version:-)
> 
> Presumably kqueue has a lower cpu usage until the system gets
> loaded at which point polling might win.

I don't think so, since kqueue only runs code associated with events
that have actually happened, and then only once until it's processed
where las I looked poll had more to do on each call.

also kqueue allows you to associate arbitrary identification
informnation with each event so you don't have to have extra code to
go from the fd to the event.. It's just way more efficient.


> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"



More information about the freebsd-net mailing list