[Pdns-users] Recursor QPS ceiling

abang abang at t-ipnet.net
Mon Dec 22 15:12:00 UTC 2014


Hello Ciro,

Your server has 8 cores. I don't know if the Recursor benefits from 
hyperthreading (would be good to know). If you run the Recursor with 
threads=4 you have only 4 cores left for the clients.  I got the best 
result with 4 Recursor threads and two clients. But I think you can 
improve it a bit if you run the clients on another machine and set the 
Recursor threads to 6 or 8. I tested with HT switched off.

Winfried




Am 22.12.2014 um 05:50 schrieb Ciro Iriarte:
> 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,
>





More information about the Pdns-users mailing list