djbdns
[Top] [All Lists]

Re: djbdns-1.05-epoll + speedup patch

To: djbdns Mailing List <dns@list.cr.yp.to>
Subject: Re: djbdns-1.05-epoll + speedup patch
From: Sami Farin <safari-dns@safari.iki.fi>
Date: Thu, 22 Feb 2007 14:21:29 +0200
Delivered-to: sp-com-lists@consult.net
Delivered-to: gmail-djbdns@securepoint.com
Delivered-to: sp.com.list@gmail.com
Delivered-to: mailing list dns@list.cr.yp.to
In-reply-to: <20070116171333.GA5674@m.safari.iki.fi>
Mail-followup-to: djbdns Mailing List <dns@list.cr.yp.to>
Mailing-list: contact dns-help@list.cr.yp.to; run by ezmlm
References: <20070116171333.GA5674@m.safari.iki.fi>
User-agent: Mutt/1.5.13 (2006-08-11)
On Tue, Jan 16, 2007 at 19:13:33 +0200, Sami Farin wrote:
> This is for Linux 2.6 with epoll feature.
> In addition to poll --> epoll, it has improved
> performance by fixing certains algos be O(1),
> for example finding next free TCP/UDP slot.
> Now it's no pain to have 3000 concurrency,
> for example, if you have the bandwidth.
> 
> I have betatested it for eight months now.
> No crashes or odd behavior detected.
> 
> Usage: RTFM: README.safari
> "make -j8 dnscache-conf dnscache" for starters.
> 
> http://safari.iki.fi/djbdns/djbdns-1.05-epoll-latest.diff.bz2

This incremental patch speeds up nicely... maybe 30%:
http://safari.iki.fi/djbdns/djbdns-1.05-epoll-20060603T140513Z-20070222T114019Z.diff
Or the whole patch against virgin djbdns-1.05:
http://safari.iki.fi/djbdns/djbdns-1.05-epoll-20070222T114019Z.diff.bz2

Still not very bloat:
$ size dnscache
   text    data     bss     dec     hex filename
  59289     520 3481200 3541009  360811 dnscache

10000 queries profiling stats below.
P4 2.8 GHz manages around 3400 qps (calculated from CPU usage stats,
from real queries).

Note that surf() now does 8 loops instead of 16.
If someone shows it's easy to crack now, tell me.

before:
293,858,835  dns_packet.c:dns_packet_getname 
[/usr/local/bin/dnscache-epoll-20060603]
131,074,147  dns_domain.c:dns_domain_length 
[/usr/local/bin/dnscache-epoll-20060603]
122,069,868  byte_copy.c:__real_byte_copy 
[/usr/local/bin/dnscache-epoll-20060603]
107,989,089  dns_random.c:dns_random [/usr/local/bin/dnscache-epoll-20060603]
107,129,840  byte_zero.c:__real_byte_zero 
[/usr/local/bin/dnscache-epoll-20060603]
 61,930,888  dns_packet.c:dns_packet_copy 
[/usr/local/bin/dnscache-epoll-20060603]
 61,396,479  case_diffb.c:case_diffb [/usr/local/bin/dnscache-epoll-20060603]
 51,425,847  cache.c:hash [/usr/local/bin/dnscache-epoll-20060603]
 47,206,417  query.c:doit [/usr/local/bin/dnscache-epoll-20060603]
 43,865,426  ???:_int_malloc [/lib/libc-2.5.so]
 42,214,666  ???:_int_free [/lib/libc-2.5.so]
 34,186,369  dns_domain.c:dns_domain_equal 
[/usr/local/bin/dnscache-epoll-20060603]
 33,774,369  ???:malloc [/lib/ld-2.5.so]
 33,732,941  ???:free [/lib/libc-2.5.so]
 28,704,525  dns_domain.c:dns_domain_free 
[/usr/local/bin/dnscache-epoll-20060603]
 22,344,668  case_lowerb.c:case_lowerb [/usr/local/bin/dnscache-epoll-20060603]
 19,382,885  roots.c:roots_find [/usr/local/bin/dnscache-epoll-20060603]
 18,056,850  dns_domain.c:dns_domain_copy 
[/usr/local/bin/dnscache-epoll-20060603]
 ...

after:
298,687,136  dns_packet.c:dns_packet_getname 
[/usr/local/src/djbdns-1.05-epoll/dnscache]
 54,026,476  dns_random.c:dns_random [/usr/local/src/djbdns-1.05-epoll/dnscache]
 45,258,576  query.c:doit [/usr/local/src/djbdns-1.05-epoll/dnscache]
 44,985,651  dns.h:doit
 44,676,324  ???:_int_malloc [/lib/libc-2.5.so]
 42,980,499  cache.c:cache_get [/usr/local/src/djbdns-1.05-epoll/dnscache]
 42,858,287  ???:_int_free [/lib/libc-2.5.so]
 40,832,492  safari_copy.c:safari_copy 
[/usr/local/src/djbdns-1.05-epoll/dnscache]
 35,479,475  dns.h:roots_find
 34,791,999  dns_domain.c:dns_domain_free 
[/usr/local/src/djbdns-1.05-epoll/dnscache]
 34,273,255  ???:malloc [/lib/libc-2.5.so]
 34,237,331  ???:free [/lib/libc-2.5.so]
 32,122,920  dns.h:smaller
 23,810,993  case.h:doit
 20,949,468  dns.h:dns_domain_copy
 ...

-- 

Attachment: pgpX5QI4H7iwy.pgp
Description: PGP signature

<Prev in Thread] Current Thread [Next in Thread>