Date: Wed, 20 Jun 2007 18:42:54 -0700 From: Julian Elischer <julian@elischer.org> To: John Polstra <jdp@polstra.com> Cc: freebsd-hackers@freebsd.org Subject: Re: in-kernel tcp server Message-ID: <4679D79E.5030200@elischer.org> In-Reply-To: <4679D081.7070600@polstra.com> References: <c4630b800706180227x2f1f433dr4ef55e8623062bf1@mail.gmail.com> <467787EF.9060009@elischer.org> <46797825.10900@polstra.com> <c4630b800706201239jdf09685t1574e78493492029@mail.gmail.com> <46799032.5060009@polstra.com> <c4630b800706201350p176ddadcu6b4eb341751d94e7@mail.gmail.com> <467999C9.9000402@elischer.org> <4679D081.7070600@polstra.com>
next in thread | previous in thread | raw e-mail | index | archive | help
John Polstra wrote: > Julian Elischer wrote: > >> I would actually like to address the performance issues. >> >> is there any chance the oldest version (4.x based) might be released, >> or at least it would be nice to get the code snippet that attaches to >> eh ng_ksocket and >> reads and writes the stream.. >> >> I could make a TCP ECHO node that way and use it for tracking down the >> bottlenecks >> I'm not too interested in the actual webserver itself. > > I don't have the ksocket version any more. It was an early experiment > (in 2001) that I discarded pretty quickly. > > The later 4.x-based version that bypassed the TCP stack and socket layer > performed well on uniprocessor systems. I didn't feel netgraph was a > performance problem at all on that version. But as multiprocessor > systems became more mainstream, the 4.x version wasn't able to take > advantage of the added CPUs. Also, it didn't support ACPI and had > trouble booting on some of the newer hardware. > > For those reasons, I updated to a 7.x-based system. At that point, the > newer SMP-friendly netgraph started to impact performance pretty > seriously. The allocation/deallocation of netgraph's queue items seemed > to be a big part of the problem. In 4.x we just passed mbufs around, > without any other allocations or deallocations. In 7.x, the mbufs are > wrapped up in queue items that have to be allocated and freed, and that > added a lot of overhead. I think also that the reader-writer locking in > netgraph was impacting performance. It's a really elegant locking > scheme, but my node graphs were so simple that I didn't really need it. Hmm ok, but if you did find some old ksocket based code sitting around, i'd love to try it in -current and work on the bottlenecks.. I do need to try fix netgraph bottlenecks... I'll certainly look at what I can do about the queue items. I may make a per-cpu cache of them. > > I don't view netgraph as having serious performance problems. It's just > that I was aiming for maximal performance (in terms of HTTP sessions per > second), and was willing to do otherwise unreasonable things to get it. > > John
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4679D79E.5030200>