[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