BIND 10 #1753: use object pool for in-memory finder contexts
BIND 10 Development
do-not-reply at isc.org
Wed Mar 14 07:10:22 UTC 2012
#1753: use object pool for in-memory finder contexts
-------------------------------------+-------------------------------------
Reporter: | Owner: jinmei
jinmei | Status: assigned
Type: task | Milestone:
Priority: high | Sprint-20120320
Component: data | Resolution:
source | Sensitive: 0
Keywords: | Sub-Project: DNS
Defect Severity: N/A | Estimated Difficulty: 5
Feature Depending on Ticket: auth | Total Hours: 0
performance |
Add Hours to Ticket: 0 |
Internal?: 0 |
-------------------------------------+-------------------------------------
Comment (by jinmei):
trac1753 is *completed*.
I believe the implementation is mostly straightforward, although it
has some dirty kludge due to the basic design issue of the entire
in-memory data source implementation (the "finder" does too many
things, and the relationship between client/finder/rrset is not well
clarified). I'd suggest revisiting these things as part of the
inevitable cleanup/refactoring.
But this task has a more fundamental issue: my local benchmark showed
it didn't improve performance much. In fact, sometimes it could be
slower than the code without this change. Some results:
I used a simplified (without RRSIGs) root zone snapshot, and performed
queryperf and querybench using some realistic query samples and a
single NXDOMAIN-only query (with the latter find() would be called
twice and other overhead such as name compression should be small, so
this should be basically advantageous for this optimization).
I created two brannches for the experiment, trac1753bench0 and
trac1753bench1. Both include major optimizations we made so far
(including the ones not merged to master yet), and bench1 contains the
changes in trac1753 (bench0 doesn't).
queryperf result:
{{{
w/ 1753
real query data: Queries per second: 18163.467979 qps
NXDOMAIN only: Queries per second: 24534.480037 qps
w/o 1753
real: Queries per second: 18174.745761 qps
NXDOMAIN: Queries per second: 23972.857990 qps
FYI: bind10-devel-20120301
real: Queries per second: 6458.807839 qps
}}}
querybench result
{{{
w/ 1753
real: Processed 965600 queries in 26.074064s (37032.97qps)
NXDOMAIN: Processed 1000000 queries in 16.556643s (60398.72qps)
w/o 1753
real: Processed 965600 queries in 25.970008s (37181.35qps)
NXDOMAIN: Processed 1000000 queries in 16.015743s (62438.56qps)
}}}
Basically, I didn't see any significant difference between the two
implementations.
I don't mind dropping the idea at this point. But I'd at least try
the comparison again after #1767. Maybe if we eliminate the
construction overhead of the base class we see some difference.
I'll put this to the review queue anyway.
--
Ticket URL: <http://bind10.isc.org/ticket/1753#comment:4>
BIND 10 Development <http://bind10.isc.org>
BIND 10 Development
More information about the bind10-tickets
mailing list