[Pdns-dev] PDNS performance

Norbert Sendetzky norbert at linuxnetworks.de
Wed Dec 17 18:53:16 CET 2003

Hash: SHA1

Hi all

I've done some additional testing with 2.9.12 to evaluate the
performance of the core and the bind backend.

The hardware, setup (caching disabled) and queries (100x90 A record
queries, 10 times) are the same as in my last benchmark. Only
the option values are varying.

1.) distributor-threads
- - 1 thread: Queries/sec = 4000 +- 2,5%
- - 10 threads: Queries/sec = 3650 +- 6%
- - 100 threads: Queries/sec = 3050 +- 5%
=> hurt by many threads - looks like some locking is done

2.) distributor-threads + cache-ttl=10
- - 1 thread: Queries/sec = 8500 +- 12%
- - 10 threads: Queries/sec = 8500 +- 15%
- - 100 threads: Queries/sec = 8500 +- 20%
- - first run has very bad performance, worse than without cache
=> cache have to be populated first (around 1/3 worse results)
=> results begin to vary a lot. This may be the result of heavy
locking in cache code.

All other options doesn't seem to have much influence on performance
in this setup.

According to my code review it seems that DNS queries are immediately
distributed to the threads. This (IMHO) hurts performance, because
the packet cache is shared amoung the threads and they have to lock
the cache. A better approach would be to handle all queries until we
know they are not in the cache and distribute them to the threads
afterwards. This could increase performance on cached items to the
possible maximum.

Furthermore a possibility to limit the cache size is necessary.
Otherwise the requested/used memory can exceed the available physical
memory, which may result in heavy swapping.

Any other opinions?


Version: GnuPG v1.0.6 (GNU/Linux)
Comment: For info see http://www.gnupg.org


More information about the Pdns-dev mailing list