I have configured a machine in my LAN as a Caching Name Servers using Unbound. Then I test the performance of this CNS from another host in the same LAN with the tool resperf come with dnsperf. And the throughput of this CNS I got is about 5376qps. After that I reconfigured this CNS using BIND9 instead of Unbound and got about 24582qps throughput. I have tried to change the config file for Unbound(increase those cache size/slabs/numbers) but that doesn’t do any good to the performance of Unbound. Can anyone give me some suggestions on this? Where can I change in the config file to get the most out of Unbound as a CNS? Thanks a lot!
Is the machine a multi cpu, multi-core machine? You can increase
num-threads in the config file.
Are you sure that both bind and unbound are treated the same by resperf?
What does resperf measure (what queries does it send?)
What is the bind configuration that you use and what is the unbound
configuration that you use? Are they acting as full resolvers, or do
they forward to another host?
Thanks a lot for your suggestion!
The machine is an Intel dual-core CPU. I’ll try to increase num-threads and see if it works.
About the queries I send. Yes, I use the same datafile and send the same queries in both Unbound and Bind cases. But actually I don’t know what kind of queries list is the best and how to generate a good one. So I just use a long list of website names.
And I configured the machine to forward all queries to the up level DNS server.
Hi Ondřej
Thank you for your advice. Sorry I’ll put on the config file later cause it’s not available now. I want to test the performance of Unbound as a Cached Name Server and I think a CNS will forward any queries that is not already in its cache,right? So after I disabled the forwarding how can the CNS resolve the queries? And I also think the same as you that the queries may fill the uplevel DNS server’s cache. What I actually did is to run resperf several times first(to make a fair condition for both Unbound and BIND) to fill the underlying uplevel DNS cache and then do the formal test. And in my formal test I use BIND first and then Unbound, but still BIND outperforms Unbound… Your suggestions? Thanks a lot!
Shuxian
I think the up-level nameserver is your problem. It is causing these
results. To get the uplevel server to be the same, you can stop and
start the uplevel nameserver between tests. Otherwise the test is not
fair (either way).
Of course, you are still left with the uplevel server talking to the
servers on the internet that change everytime. To fix that you can run
your own authority server that is queried.