[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