<div dir="ltr"><div>Hi!</div><div>We found dnsdist very useful and interesting and using it in a couple of configurations.</div><div>Now we are testing dnsdist to find the best tuning for our setup,</div><div>and we find the performance is not what we expected (based on what we saw in presentations)</div><div><br></div><div>We can't get more than 120/150 kqps </div><div>We don't think it's network related, and doesn't seem to be interface or udp stack.</div><div><br></div><div>If we test whith only</div><div><br></div><div>addAction(AllRule(),DropAction())</div><div>We get ~600kqps</div><div><br></div><div>with some answer</div><div>addAction(AllRule(),RCodeAction(dnsdist.REFUSED))</div><div>we get ~450kqps</div><div><br></div><div>but when we enable cache, and real queries/answers we get stuck at ~120kqps.</div><div>(numbers and test details below.)</div><div><br></div><div>The queries are a repeated sequence, so we have 100% cache hit.</div><div><br></div><div>Is this a real limit? or there is something else we can tune?</div><div><br></div><div>Thanks!</div><div><br></div><div>----------------------------------------------------</div><div>Our config:</div><div>dnsdist-1.1.0 from rpm (also compiled, no difference)</div><div>Centos 7 kernel 3.10.0</div><div>32 cores  CPU E5-2660/ 32GB ram</div><div>1gb card.</div><div><br></div><div>we use resperf and drool to test dns.</div><div>nuutcp and iperf3 to test network  (reporting 900mbs udp and 900Kpps udp 150bytes pkts)</div><div>and netdata and graphite to see usage/errors/qps, etc.</div><div><br></div><div>The tests.</div><div>Always 12 listeners (addLocal)</div><div>===============================================</div><div>addAction(AllRule(),DropAction())</div><div>drool</div><div>sending ~ 900kqps</div><div>dnsdist web reports: ~650kqps</div><div>udp.inerrrors  small</div><div>=================================================</div><div>addAction(AllRule(),RCodeAction(dnsdist.REFUSED))</div><div>drool</div><div>sending ~460Kqps</div><div>dnsdist report ~450kqps</div><div>udp.inerrrors  ~0 whith sporadic high lost peak</div><div><br></div><div>multiple resperf:</div><div>Sending 650 Kqps</div><div>dnsdist reports ~400kqps</div><div>Udp.inerrors ~250 kpps</div><div><br></div><div>sending 300 kqps,  reports ~300kqps, lost responses: negligible</div><div>udp.inerrors ~0</div><div>Recv-Q ~0 Send-Q 0-5000</div><div>========================================================</div><div>Full config: </div><div>12 addLocal, small cache, many backend servers (almost not used)</div><div><br></div><div>cache = newPacketCache(1000, 86400, 0, 60, 60)</div><div>getPool("dns-dist1"):setCache(cache)</div><div>addPoolRule({"<a href="http://0.0.0.0/0">0.0.0.0/0</a>"}, "dns-dist1")</div><div><br></div><div>setServerPolicy(firstAvailable)</div><div><br></div><div>Seding more than 140kqps Recv-Q grows, and queries get lost.</div><div>DNSDIST web interface and graphite counters report between 120kqps and 140kqps</div><div>never more.</div><div><br></div><div>Netstat output</div><div>Active Internet connections (servers and established)</div><div>Proto Recv-Q Send-Q Local Address           Foreign Address         State</div><div>udp   14006016   1536 dns-dist1-e:domain    0.0.0.0:*</div><div>udp   16487424    768 dns-dist1-e:domain    0.0.0.0:*</div><div>udp   16766208   3328 dns-dist1-e:domain    0.0.0.0:*</div><div>udp   14918400   9472 dns-dist1-e:domain    0.0.0.0:*</div><div>udp   16750848   2048 dns-dist1-e:domain    0.0.0.0:*</div><div>udp   13962240    768 dns-dist1-e:domain    0.0.0.0:*</div><div>udp   16637184      0 dns-dist1-e:domain    0.0.0.0:*</div><div>udp   12026880   2048 dns-dist1-e:domain    0.0.0.0:*</div><div>udp   15539712    768 dns-dist1-e:domain    0.0.0.0:*</div><div>udp   16772352      0 dns-dist1-e:domain    0.0.0.0:*</div><div>udp   10476288    768 dns-dist1-e:domain    0.0.0.0:*</div><div>udp   15005184      0 dns-dist1-e:domain    0.0.0.0:*</div></div>