[dnsdist] dnsdist performance

Nico nicomail at gmail.com
Mon Apr 3 20:44:06 UTC 2017


Hi!

Thanks for answering!.
I'm not pretending to be anonymous.
Mi name is Nicolas Baumgarten and I do infrastructure support .

I really appreciate your work. And hope to help.

Will try your suggestion with the version from repository.

Our results are those which I've send in the initial mail.

I'm trying to set up a baseline for maximum performance with cache,
and without any additional rules to be able to compare the impact of
future configuration changes.

One dnsdist process, whith 12 listeners, small cache, and all cached queries
can't get more than 120/140 kqps on our config.

Now we just tried to run 3 instances of dnsdist, with almost the same
config and 6 listeners each,
and we obtained 360/380 kqps, that's a linear increment.

I'm happy to share my results, what else I can send you?

Thanks!


On Mon, Apr 3, 2017 at 5:00 PM, bert hubert <bert.hubert at powerdns.com>
wrote:

> Hello "Nico Mail",
>
> Thank you for contacting us anonymously. My name is Bert Hubert and we work
> very hard to provide fast software for you, for free.
>
> Could you try this branch:
>
> git clone -b dnsdist-concur https://github.com/ahupowerdns/pdns.git
> cd pdns/pdns/dnsdistdist
> autoreconf -i
> ./configure
> make -j4 -k dnsdist
> ./dnsdist -C /your/dnsdist.conf
>
> Before you compile, try
> $ apt-get install g++ libboost-all-dev libtool make pkg-config
> libmysqlclient-dev libssl-dev liblua-dev
>
> Or the equivalent.
>
> Could you let us know what performance you measure?
>
> We've recently been optimizing the dnsdist cache for SMP use and timings,
> and we measure around 500kqps now.  Would love to know your results.
>
> Thanks.
>
>         Bert
>
>
> On Mon, Apr 03, 2017 at 04:30:47PM -0300, Nico wrote:
> > Hi!
> > We found dnsdist very useful and interesting and using it in a couple of
> > configurations.
> > Now we are testing dnsdist to find the best tuning for our setup,
> > and we find the performance is not what we expected (based on what we saw
> > in presentations)
> >
> > We can't get more than 120/150 kqps
> > We don't think it's network related, and doesn't seem to be interface or
> > udp stack.
> >
> > If we test whith only
> >
> > addAction(AllRule(),DropAction())
> > We get ~600kqps
> >
> > with some answer
> > addAction(AllRule(),RCodeAction(dnsdist.REFUSED))
> > we get ~450kqps
> >
> > but when we enable cache, and real queries/answers we get stuck at
> ~120kqps.
> > (numbers and test details below.)
> >
> > The queries are a repeated sequence, so we have 100% cache hit.
> >
> > Is this a real limit? or there is something else we can tune?
> >
> > Thanks!
> >
> > ----------------------------------------------------
> > Our config:
> > dnsdist-1.1.0 from rpm (also compiled, no difference)
> > Centos 7 kernel 3.10.0
> > 32 cores  CPU E5-2660/ 32GB ram
> > 1gb card.
> >
> > we use resperf and drool to test dns.
> > nuutcp and iperf3 to test network  (reporting 900mbs udp and 900Kpps udp
> > 150bytes pkts)
> > and netdata and graphite to see usage/errors/qps, etc.
> >
> > The tests.
> > Always 12 listeners (addLocal)
> > ===============================================
> > addAction(AllRule(),DropAction())
> > drool
> > sending ~ 900kqps
> > dnsdist web reports: ~650kqps
> > udp.inerrrors  small
> > =================================================
> > addAction(AllRule(),RCodeAction(dnsdist.REFUSED))
> > drool
> > sending ~460Kqps
> > dnsdist report ~450kqps
> > udp.inerrrors  ~0 whith sporadic high lost peak
> >
> > multiple resperf:
> > Sending 650 Kqps
> > dnsdist reports ~400kqps
> > Udp.inerrors ~250 kpps
> >
> > sending 300 kqps,  reports ~300kqps, lost responses: negligible
> > udp.inerrors ~0
> > Recv-Q ~0 Send-Q 0-5000
> > ========================================================
> > Full config:
> > 12 addLocal, small cache, many backend servers (almost not used)
> >
> > cache = newPacketCache(1000, 86400, 0, 60, 60)
> > getPool("dns-dist1"):setCache(cache)
> > addPoolRule({"0.0.0.0/0"}, "dns-dist1")
> >
> > setServerPolicy(firstAvailable)
> >
> > Seding more than 140kqps Recv-Q grows, and queries get lost.
> > DNSDIST web interface and graphite counters report between 120kqps and
> > 140kqps
> > never more.
> >
> > Netstat output
> > Active Internet connections (servers and established)
> > Proto Recv-Q Send-Q Local Address           Foreign Address         State
> > udp   14006016   1536 dns-dist1-e:domain    0.0.0.0:*
> > udp   16487424    768 dns-dist1-e:domain    0.0.0.0:*
> > udp   16766208   3328 dns-dist1-e:domain    0.0.0.0:*
> > udp   14918400   9472 dns-dist1-e:domain    0.0.0.0:*
> > udp   16750848   2048 dns-dist1-e:domain    0.0.0.0:*
> > udp   13962240    768 dns-dist1-e:domain    0.0.0.0:*
> > udp   16637184      0 dns-dist1-e:domain    0.0.0.0:*
> > udp   12026880   2048 dns-dist1-e:domain    0.0.0.0:*
> > udp   15539712    768 dns-dist1-e:domain    0.0.0.0:*
> > udp   16772352      0 dns-dist1-e:domain    0.0.0.0:*
> > udp   10476288    768 dns-dist1-e:domain    0.0.0.0:*
> > udp   15005184      0 dns-dist1-e:domain    0.0.0.0:*
>
> > _______________________________________________
> > dnsdist mailing list
> > dnsdist at mailman.powerdns.com
> > https://mailman.powerdns.com/mailman/listinfo/dnsdist
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.powerdns.com/pipermail/dnsdist/attachments/20170403/7312e479/attachment-0001.html>


More information about the dnsdist mailing list