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
...
--
pgpX5QI4H7iwy.pgp
Description: PGP signature
|