[Pdns-users] Some DNS performance tests with various PDNS backends and BIND9

Nick Milas nmilas at admin.noa.gr
Wed May 11 18:17:00 UTC 2011


UPDATED: In the meantime I have managed to run the test with 
BIND9/SDB/LDAP, so I am resending the whole message for completeness.

Just in case someone would like to examine some comparative performance 
results re. various PowerDNS backends with ref. to BIND9, I am posting 
the following tests.

In case you think something should be changed in the setup to make 
results more objective and more real-life, please let me know.

Comments would be welcome and appreciated.

Test Setup:
==========

Running queryperf from a (virtual) machine ("vdns") against an 
Authoritative-only DNS server running on another (virtual) machine 
("vdev") on the same LAN (Both virtual machines run on a VM cluster). 
DNS server logging was off in all cases.

Both machines are running CentOS 5.6 x86_64. The data file 
(examplecom.txt) included 736 type A records. (All the forward type "A" 
RRs used in our domain.) The file was cycled during 60 seconds.

Of course, test results are only relative to the particular hardware 
setup, so they should not be compared to other test results.

IP addresses and domain names have been changed as they are public.

Results:
========
(Using BIND9 9.3.6 (13615 qps) as reference)
---------------------------------------------
BIND9 9.3.6          : 13615  qps        -
BIND9 9.7.3          : 12731  qps ===>  -6.5%
BIND9 9.7.3/SDB/LDAP :   370* qps ===> -97.3%
PDNS 2.9.22 / BIND   : 17683  qps ===> +29.9%
PDNS 2.9.22 / MYSQL  : 16879  qps ===> +24.0%
PDNS 2.9.22 / LDAP   : 17339  qps ===> +27.4%
---------------------------------------------
* See comment at the bottom of the last test.

A conclusion is that, under this setup, PDNS/LDAP appears faster than 
any other setup, except PDNS/BIND (from which it is only -1,95% slower). 
Note that the Openldap cache size was set large enough to hold the 
entire database (as it should).

The test confirms the slow qps rate when running using BIND9/SDB/LDAP.

Nick

==============================================================
Test 1: Using PowerDNS 2.9.22 (CentOS repo) - BIND backend:
==============================================================
./queryperf -d examplecom.txt -s 10.10.10.11 -l 60

DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $

[Status] Processing input data
[Status] Sending queries (beginning with 10.10.10.11)
[Status] Testing complete

Statistics:

   Parse input file:     multiple times
   Run time limit:       60 seconds
   Ran through file:     1441 times

   Queries sent:         1061006 queries
   Queries completed:    1061006 queries
   Queries lost:         0 queries
   Queries delayed(?):   0 queries

   RTT max:              0.041637 sec
   RTT min:              0.000069 sec
   RTT average:          0.001046 sec
   RTT std deviation:    0.000376 sec
   RTT out of range:     0 queries

   Percentage completed: 100.00%
   Percentage lost:        0.00%

   Started at:           Tue May 10 21:01:01 2011
   Finished at:          Tue May 10 21:02:01 2011
   Ran for:              60.000656 seconds

   Queries per second:   17683.239997 qps

======================================================
Test 2: PowerDNS 2.9.22 - LDAP backend on Openldap v2.4.25 w/ hdb 
backend running locally
======================================================

[root at vdns queryperf]# ./queryperf -d examplecom.txt -s 10.10.10.11 -l 60

DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $

[Status] Processing input data
[Status] Sending queries (beginning with 10.10.10.11)
[Status] Testing complete

Statistics:

   Parse input file:     multiple times
   Run time limit:       60 seconds
   Ran through file:     1413 times

   Queries sent:         1040546 queries
   Queries completed:    1040546 queries
   Queries lost:         0 queries
   Queries delayed(?):   0 queries

   RTT max:              0.668537 sec
   RTT min:              0.000110 sec
   RTT average:          0.001070 sec
   RTT std deviation:    0.001224 sec
   RTT out of range:     0 queries

   Percentage completed: 100.00%
   Percentage lost:        0.00%

   Started at:           Tue May 10 21:06:58 2011
   Finished at:          Tue May 10 21:07:58 2011
   Ran for:              60.013004 seconds

   Queries per second:   17338.675464 qps

===================================================================
Test 3: BIND 9.3.6 (CentOS standard) with flat files):
===================================================================

[root at vdns queryperf]# ./queryperf -d examplecom.txt -s 10.10.10.11 -l 60

DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $

[Status] Processing input data
[Status] Sending queries (beginning with 10.10.10.11)
[Status] Testing complete

Statistics:

   Parse input file:     multiple times
   Run time limit:       60 seconds
   Ran through file:     1109 times

   Queries sent:         816941 queries
   Queries completed:    816941 queries
   Queries lost:         0 queries
   Queries delayed(?):   0 queries

   RTT max:              0.113733 sec
   RTT min:              0.000091 sec
   RTT average:          0.001394 sec
   RTT std deviation:    0.000761 sec
   RTT out of range:     0 queries

   Percentage completed: 100.00%
   Percentage lost:        0.00%

   Started at:           Tue May 10 21:12:10 2011
   Finished at:          Tue May 10 21:13:10 2011
   Ran for:              60.001007 seconds

   Queries per second:   13615.454821 qps

==================================================================
Note: Upgraded to BIND9 packages at:
http://centos.alt.ru/pub/bind/9.7.3/RPMS/x86_64/


==================================================================
Test 4: BIND 9.7.3 with flat files:
==================================================================

[root at vdns queryperf]# ./queryperf -d examplecom.txt -s 10.10.10.11 -l 60

DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $

[Status] Processing input data
[Status] Sending queries (beginning with 10.10.10.11)
[Status] Testing complete

Statistics:

   Parse input file:     multiple times
   Run time limit:       60 seconds
   Ran through file:     1037 times

   Queries sent:         763897 queries
   Queries completed:    763897 queries
   Queries lost:         0 queries
   Queries delayed(?):   0 queries

   RTT max:              0.027807 sec
   RTT min:              0.000058 sec
   RTT average:          0.001497 sec
   RTT std deviation:    0.000435 sec
   RTT out of range:     0 queries

   Percentage completed: 100.00%
   Percentage lost:        0.00%

   Started at:           Tue May 10 21:33:35 2011
   Finished at:          Tue May 10 21:34:35 2011
   Ran for:              60.001197 seconds

   Queries per second:   12731.362676 qps

===================================================================
Test 5: PowerDNS 2.9.22 (CentOS standard) with gmysql backend with Mysql 
5.0.77
===================================================================

[root at vdns queryperf]# ./queryperf -d examplecom.txt -s 10.10.10.11 -l 60

DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $

[Status] Processing input data
[Status] Sending queries (beginning with 10.10.10.11)
[Status] Testing complete

Statistics:

   Parse input file:     multiple times
   Run time limit:       60 seconds
   Ran through file:     1376 times

   Queries sent:         1012756 queries
   Queries completed:    1012756 queries
   Queries lost:         0 queries
   Queries delayed(?):   0 queries

   RTT max:              0.047820 sec
   RTT min:              0.000078 sec
   RTT average:          0.001095 sec
   RTT std deviation:    0.000383 sec
   RTT out of range:     0 queries

   Percentage completed: 100.00%
   Percentage lost:        0.00%

   Started at:           Wed May 11 13:53:43 2011
   Finished at:          Wed May 11 13:54:43 2011
   Ran for:              60.000824 seconds

   Queries per second:   16879.034861 qps

===================================================================
Test 6: BIND 9.7.3 / SDB / LDAP
(on Openldap v2.4.25 w/ hdb backend running -replicated- locally)
===================================================================

[root at vdns queryperf]# ./queryperf -d examplecom.txt -s 10.10.10.11 -l 60

DNS Query Performance Testing Tool
Version: $Id: queryperf.c,v 1.12 2007/09/05 07:36:04 marka Exp $

[Status] Processing input data
[Status] Sending queries (beginning with 10.10.10.11)
[Status] Testing complete

Statistics:

   Parse input file:     multiple times
   Run time limit:       60 seconds
   Ran through file:     22 times

   Queries sent:         16824 queries
   Queries completed:    16824 queries
   Queries lost:         0 queries
   Queries delayed(?):   0 queries

   RTT max:              0.600510 sec
   RTT min:              0.006491 sec
   RTT average:          0.071317 sec
   RTT std deviation:    0.039023 sec
   RTT out of range:     0 queries

   Percentage completed: 100.00%
   Percentage lost:        0.00%

   Started at:           Wed May 11 20:28:15 2011
   Finished at:          Wed May 11 20:29:15 2011
   Ran for:              60.066465 seconds

   Queries per second:   280.089731* qps

* Due to running on VMs, results depend on total cluster load.
To adjust, when running this test, we run the others too, which proved 
25% slower for all setups. So at the "table" of results we adjusted this 
figure to compensate for this effect (Adjusted number: 370 qps).

=======================================================================



More information about the Pdns-users mailing list