[bind10-dev] optimization: use some additional polling in SyncUDPServer

JINMEI Tatuya / 神明達哉 jinmei at isc.org
Thu Jul 5 22:33:30 UTC 2012


At Thu, 5 Jul 2012 09:23:16 +0200,
Michal 'vorner' Vaner <michal.vaner at nic.cz> wrote:

> On Wed, Jul 04, 2012 at 08:25:53PM +0200, Shane Kerr wrote:
> > A related risk is overflowing kernel UDP buffers because of this
> > delay; for example if we are getting IPv4 queries at a rate 10x that of
> > IPv6, then there might be enough IPv6 queries to keep us iterating for
> > 4 or 5 queries when 40 or 50 pile up on the IPv4 side.
> 
> I think this concern is a false one. This optimisation would pick up an IPv6
> query only in case it is already waiting in the input buffer, not wait for it.
> So we are not talking about a rate at which they come, but about a rate of
> answering the queries.
> 
> Assuming answering an IPv6 query is as fast as answering IPv4 one, if we got 40
> or 50 queries while answering 4 or 5, it would be the same for 4 or 5 IPv4
> queries, so we would be 10 times slower than we have to be.

That's right.  If this situation could be an issue, the server wouldn't
be able to handle this rate of IPv4 queries anyway.  When the server's
base performance is okay, the "polling" approach should actually be
more advantageous for this particular type of situation (it's now able
to handle 10 IPv4 queries without delaying any IPv6 query (because
it's not coming within this period) while avoiding the overhead of the
ASIO layer).

---
JINMEI, Tatuya
Internet Systems Consortium, Inc.


More information about the bind10-dev mailing list