Date: Fri, 17 Oct 2003 22:03:42 -0700 From: Terry Lambert <tlambert2@mindspring.com> To: Lev Walkin <vlm@netli.com> Cc: freebsd-hackers@freebsd.org Subject: Re: Benchmarking kqueue() performance? Message-ID: <3F90C9AE.3319FCD2@mindspring.com> References: <20031017185823.GA2151@crodrigues.org> <3F9071B5.3040900@netli.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Lev Walkin wrote: > One of the most comprehensive sites about that problem is: > > http://www.kegel.com/c10k.html That's about scaling to a large number of connections, not about kqueue() vs. select performance. The biggest problem with a large number of connections, at least as far as FreeBSD is concerned, is the TCP timer implementation using a callout wheel, since any expiring timer has to traverse every bucket in the chain, instead of stopping at the first one that's un expired (see the BSD 4.2/4.3 timers for an example of the right way to do it). FWIW: I've had a FreeBSD box with a static page server on it up to 1.6M simultaneous connections with very little work, so 10K is pretty trivial in comparison. For doing real work, and giving 1G to a server process and 512M to caching, this number drops to ~250K connections, but that's still 25 time what he claims is some insurmountable barrier. BTW, the company for which I did this work is still shipping real product that handles those loads on a FreeBSD box, FWIW. -- Terry
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3F90C9AE.3319FCD2>