DNS query performance

John Dickinson jad at nominet.org.uk
Tue Sep 12 01:42:38 PDT 2006

Hi Marcelo,

Marcelo Gardini do Amaral <marcelo at registro.br> wrote on 11/09/2006 

> I would like to discuss a little bit more about UDP performance. I've
> made some tests and the results may have some value here.
> In this test is easy to see that there is something different in the
> FreeBSD 6 branch.
> I made a benchmark with bind 9.3.2 (without threads support) and nsd
> 3.0.1 (1 server forked) on a HP Proliant Dual AMD Opteron 2.4GHz among
> FreeBSD 4.11, 6.1 and Linux kernel 2.6.15, all of them for i386
> systems. I used this simple zone file:

I have also been testing bind and nsd on HP proliant and Sun hardware. 

In my tests I ran queryperf on several HP BL25p blade servers running 
FreeBSD 6.X. These servers sent queries to BIND or NSD running on a Sun 
T2000 (Solaris) or another HP blade (Linux). 

>                    queries per second
> OS                 Bind 9.3.2   NSD 3.0.1
> ----               ----         ----
> Linux 2.6 SMP      38845        59645
> FreeBSD 4.11 SMP   34977        59417
> FreeBSD 4.11 UP    33926        59547
> FreeBSD 6.1 SMP    14953        15908
> FreeBSD 6.1 UP     15516        14752

FYI I see similar results for BIND on Linux ( I got about 42000 q/s for 
BIND 9.4.0b2)

> Comments:
> Linux had a performance just 10% better than FreeBSD 4.11 with
> bind. With nsd I didn't see any difference between them. There is no
> difference also tweaking the kernel from UP to SMP.
> With nsd the performance was improved to ~60k queries per second on
> 4.11 and Linux, i.e., it was almost doubled comparing with bind. I
> couldn't see any packet loss in any case.
> On the other hand, on FreeBSD 6.1 the result was lower than half of
> bind's performance on the others systems tested. And with nsd the
> result didn't get better (unlike happend on FreeBSD 4.11). I also got
> some 'timeout' on FreeBSD 6.1 - about 200 from 1M packets were lost.

I saw significant numbers of lost queries reported by queryperf when it 
was running on FreeBSD 6.1. I did not see this issue when I ran queryperf 
on FreeBSD 6.0.

I have not had time to fully investigate this issue but it appeared that 
some queries from queryperf never made it out of the FreeBSD 6.1 box. When 
I ran netstat -s -p udp I saw that that the numbers for delivered and 
datagrams output differed by the number of queries that queryperf was 
reporting as lost. However I am yet to figure out what this means. 

> In actual fact, I think that is important to emphasize that the same
> limit was reached on both name servers - no more than ~15k queries per
> second was possible on 6.1. I think there is an issue on the system,
> not on bind neither nsd.
> Besides this, I've noticed some problems with bge interface
> driver. Many times the interface is up and running and suddenly goes
> down, without any reason, or after a reboot it doesn't go up. And if
> you just remove and insert again the cable, everything returns to
> work. On up-to-date FreeBSD 6 boxes I don't see this problem so often,
> but with 'netstat -i' it's possible to find some input errors - I was
> used to see no errors on 4.11 and others.
> Does anybody noticed this behavior? 

I have not seen the interfaces issue but my test servers never stay up 
very long before being reinstalled.

If anyone has any ideas of things to try then please let me know.


More information about the freebsd-net mailing list