[Pdns-users] Recursor QPS ceiling

Ciro Iriarte cyruspy at gmail.com
Mon Dec 22 04:50:17 UTC 2014


2014-12-18 4:19 GMT-03:00 abang <abang at t-ipnet.net>:
> Hi Ciro,
>
> Tried it quickly with dnsperf (http://nominum.com/measurement-tools/):
>
> # echo -e "localhost.\tA" > datafile
> # pdns_recursor --threads=4 --pdns-distributes-queries=no
> # dnsperf -c2 -n 10000000 -l 10 -d datafile
>
> Statistics:
>
>   Queries sent:         3314870
>   Queries completed:    3314870 (100.00%)
>   Queries lost:         0 (0.00%)
>
>   Response codes:       NOERROR 3314870 (100.00%)
>   Average packet size:  request 27, response 43
>   Run time (s):         10.000025
>   Queries per second:   331486.171285
>
>   Average Latency (s):  0.000040 (min 0.000020, max 0.002530)
>   Latency StdDev (s):   0.000038
>
>
> You need a Server with at least 8 cpu cores for this example. Or you can
> run dnsperf on a different server.
>
> If you set pdns-distributes-queries=yes, the Recursor uses always the
> same thread for one specific query name (localhost. in this example).
> This improves the cache-hit-rate and thus the performance for normal
> operation.
>
> Winfried
>

Thanks for the hint Winfried, disabled the pdns-distributes-queries
for this benchmark and got this numbers:

[root at test01 tmp]#  /usr/local/nom/bin/dnsperf -c2 -n 10000000 -l 10 -d datafile
DNS Performance Testing Tool
Nominum Version 2.0.0.0

[Status] Command line: dnsperf -c2 -n 10000000 -l 10 -d datafile
[Status] Sending queries (to 127.0.0.1)
[Status] Started at: Mon Dec 22 01:36:00 2014
[Status] Stopping after 10.000000 seconds or 10000000 runs through file
[Status] Testing complete (time limit)

Statistics:

  Queries sent:         658344
  Queries completed:    658344 (100.00%)
  Queries lost:         0 (0.00%)

  Response codes:       NOERROR 658344 (100.00%)
  Average packet size:  request 27, response 43
  Run time (s):         10.003230
  Queries per second:   65813.142355

  Average Latency (s):  0.001396 (min 0.000070, max 0.024774)
  Latency StdDev (s):   0.000384

Notably it didn't improve with 8 clients:

[Status] Command line: dnsperf -c8 -n 10000000 -l 10 -d datafile
[Status] Sending queries (to 127.0.0.1)
[Status] Started at: Mon Dec 22 01:39:07 2014
[Status] Stopping after 10.000000 seconds or 10000000 runs through file
[Status] Testing complete (time limit)

Statistics:

  Queries sent:         629309
  Queries completed:    629309 (100.00%)
  Queries lost:         0 (0.00%)

  Response codes:       NOERROR 629309 (100.00%)
  Average packet size:  request 27, response 43
  Run time (s):         10.000996
  Queries per second:   62924.632707

  Average Latency (s):  0.001541 (min 0.002962, max 0.035041)
  Latency StdDev (s):   0.000273

Interestingly, this is worse than the previous test. Should I blame
the hardware?,

Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                16
On-line CPU(s) list:   0-15
Thread(s) per core:    2
Core(s) per socket:    8
Socket(s):             1
NUMA node(s):          2
Vendor ID:             AuthenticAMD
CPU family:            21
Model:                 2
Stepping:              0
CPU MHz:               1400.000
BogoMIPS:              5586.41
Virtualization:        AMD-V
L1d cache:             16K
L1i cache:             64K
L2 cache:              2048K
L3 cache:              6144K
NUMA node0 CPU(s):     0-7
NUMA node1 CPU(s):     8-15

model name      : AMD Opteron(tm) Processor 6386 SE

Lowering threads from 16 to 8 on the recursor (client running on the
same host), got better numbers, but still far from 100k QPS (or your
300k):


[Status] Command line: dnsperf -c8 -n 10000000 -l 10 -d datafile
[Status] Sending queries (to 127.0.0.1)
[Status] Started at: Mon Dec 22 01:46:59 2014
[Status] Stopping after 10.000000 seconds or 10000000 runs through file
[Status] Testing complete (time limit)

Statistics:

  Queries sent:         761235
  Queries completed:    761235 (100.00%)
  Queries lost:         0 (0.00%)

  Response codes:       NOERROR 761235 (100.00%)
  Average packet size:  request 27, response 43
  Run time (s):         10.000818
  Queries per second:   76117.273607

  Average Latency (s):  0.001271 (min 0.001566, max 0.051377)
  Latency StdDev (s):   0.000124


DNS Performance Testing Tool
Nominum Version 2.0.0.0

[Status] Command line: dnsperf -c2 -n 10000000 -l 10 -d datafile
[Status] Sending queries (to 127.0.0.1)
[Status] Started at: Mon Dec 22 01:47:25 2014
[Status] Stopping after 10.000000 seconds or 10000000 runs through file
[Status] Testing complete (time limit)

Statistics:

  Queries sent:         795363
  Queries completed:    795363 (100.00%)
  Queries lost:         0 (0.00%)

  Response codes:       NOERROR 795363 (100.00%)
  Average packet size:  request 27, response 43
  Run time (s):         10.000635
  Queries per second:   79531.249766

  Average Latency (s):  0.001178 (min 0.000091, max 0.019318)
  Latency StdDev (s):   0.000285


Regards,

-- 
Ciro Iriarte
http://iriarte.it
--




More information about the Pdns-users mailing list