BIND 10 #536: Make OutputBuffer more lightweight

BIND 10 Development do-not-reply at isc.org
Mon Jan 31 17:18:51 UTC 2011


#536: Make OutputBuffer more lightweight
-------------------------------------+-------------------------------------
                 Reporter:  vorner   |                Owner:  UnAssigned
                     Type:  task     |               Status:  reviewing
                 Priority:  major    |            Milestone:  A-Team-
                Component:           |  Sprint-20110209
  DNSPacket API                      |           Resolution:
                 Keywords:           |            Sensitive:  0
Estimated Number of Hours:  0.0      |  Add Hours to Ticket:  0
                Billable?:  1        |          Total Hours:  0
                Internal?:  0        |
-------------------------------------+-------------------------------------

Comment (by vorner):

 Ups, sorry, I looked wrong, I compiled it without --enable-static, so I
 was examining only the functions inside bin/auth. So, correction.

 It does not inline unless the bounds check is removed (even if told to
 explicitly, the compilers have no respect and do whatever they like). The
 numbers I mentioned above are valid, only when compiled without --with-
 lcov it runs slightly faster. So, the commited code had some 26kQPS, the
 one without bounds check 32kQPS here.

 The profile doesn't change much with the bounds check, without it changes
 to this:

 {{{
 47446    23.7183  isc::dns::Name::compare(isc::dns::Name const&) const
 30205    15.0995  isc::dns::MessageRenderer::writeName(isc::dns::Name
 const&, bool)
 26195    13.0949  boost::detail::shared_count::~shared_count()
 15388     7.6925  asiolink::UDPServer::UDPServer(asiolink::UDPServer
 const&)
 6560      3.2793  asiolink::UDPServer::~UDPServer()
 }}}

 Most of it probably got inlined into compare, but the writeName got faster
 as well, rendering some next problems more significant (eg. the shared
 pointers).

 About the bounds check, what is the price of trading? If the check is not
 there and there's a bug, user will see a SEGFAULT instead of exception (I
 guess a bounds check exception shouldn't be caught anyway). Is the
 performance worth it? Should I bring it to the dev list? Or, do we have
 any rules about it?

-- 
Ticket URL: <https://bind10.isc.org/ticket/536#comment:4>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development


More information about the bind10-tickets mailing list