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

Nick Milas nmilas at admin.noa.gr
Wed May 11 11:58:41 UTC 2011


Hello,

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, please let me know.

Comments would be welcome and appreciated.

NOTE: I would like to run the same test against BIND9/SDB with LDAP 
backend, but I had a hard time trying to migrate my pdns LDAP data to 
bind-sdb LDAP entries. zone2ldap BIND9 tool also fails after a few 
entries (I've abandoned trying). IF SOMEONE HAS A SCRIPT FOR SUCH A 
MIGRATION, PLEASE LET ME KNOW.

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:
========
With BIND9 9.3.6 (13615 qps) as reference:
we have:
BIND9 9.7.3: 12731 qps ===>  -6.5%
PDNS - BIND: 17683 qps ===> +29.9%
PDNS- MYSQL: 16879 qps ===> +24.0%
PDNS - LDAP: 17339 qps ===> +27,4%

A conclusion is that, under this setup, PDNS/LDAP appears faster than 
any other DNS server, 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).

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

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





More information about the Pdns-users mailing list