Date: Tue, 12 Sep 2006 12:35:58 +0200 From: Pieter de Goeje <pieter@degoeje.nl> To: Marcelo Gardini do Amaral <marcelo@registro.br> Cc: freebsd-stable@freebsd.org Subject: Re: DNS query performance Message-ID: <200609121235.58619.pieter@degoeje.nl> In-Reply-To: <20060911195521.GD63300@registro.br> References: <E1GIMNJ-0000Dd-QH@cs1.cs.huji.ac.il> <20060904130827.GE12975@registro.br> <20060911195521.GD63300@registro.br>
next in thread | previous in thread | raw e-mail | index | archive | help
On Monday 11 September 2006 21:55, Marcelo Gardini do Amaral wrote: > 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: > <snip> > 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 I did some UDP performance testing on my own and these are my results: Both systems are running FreeBSD 6.1-STABLE i386, connected using gigabit ethernet. The server is an AMD Athlon64 2Ghz with an onboard sk(4) gbit nic. The server program is a simple UDP echo server, collecting various performance data. UDP "requests" are handled completely synchronously. It ofcourse differs from the DNS server in the sense that is doesn't actually do anything with the received data. The client is an AMD Sempron 1,6Ghz with a cheap re(4) gbit nic which offers no interrupt moderation. The client program forks into a part that sends packets as fast as possible to the server and a part that receives echo'ed packets from the server. The client is thus capable of doing asynchronous "requests". For these tests the client sent 1000000 packets. Packet Size Queries/Second Loss Total Bandwidth Bytes % 10^6 bits/sec 100 57348 0.5 92 200 44873 0.5 144 300 39117 0.4 198 400 35672 0.4 228 1000 27124 0.4 434 Also note that the client was using 100% cpu during the tests. The server was approx. 50% idle, using most (28%) cpu in the interrupt handlers, leaving in in my opinion enough room for the actual data processing. My conclusion: there's definately something wrong with your setup. Maybe you could try a different NIC to see if the performance issues are driver related. - Pieter de Goeje
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200609121235.58619.pieter>