Date: Sat, 01 Mar 1997 08:28:29 -0800 From: David Greenman <dg@root.com> To: hackers@freebsd.org Subject: Re: overview of socket hashing changes, plus new patch Message-ID: <199703011628.IAA05199@root.com>
next in thread | raw e-mail | index | archive | help
------- Forwarded Message To: "David S. Miller" <davem@jenolan.rutgers.edu> cc: netdev@roxanne.nuclecu.unam.mx Subject: Re: overview of socket hashing changes, plus new patch In-reply-to: Your message of "Fri, 28 Feb 1997 21:26:57 EST." <199703010226.VAA08431@jenolan.caipgeneral> From: David Greenman <dg@root.com> Reply-To: dg@root.com - -------- A couple of comments: > FreeBSD - Single hash for entire TCP socket > space. Listening sockets pollute > the established connections. I didn't see a significant amount of overhead due to this when I implemented the PCB hashing in FreeBSD. Almost all of the overhead was in the per-packet linear list searches...so creating a seperate hash list for listening/wildcard PCBs didn't seem worth it at the time. > Hash > function involves a mod instruction > because the table size is a prime. > (Some minutae, I have approximately 50 or so samples from some > of the largest ftp and web servers that I know about (some > of these samples have 5,000 or more connections), listing > the socket connections during high load. A comparison of the > current bound hash function under Linux and the one > under FreeBSD shows them to distribute about the same, if not > better for Linux (in particular Linux is better on machines > which run many clients as well as large single port servers) > the prime size of the hash does not seem to help FreeBSD and > they eat the multi-cycle modulo instrucion on top of it all, > so stupid) My analysis showed that an add or shift+add didn't provide adequate distribution. I actually went to a lot of trouble to write the prime number based hashing code because of this. If you've found a good way to get similarly good distribution, I'm certainly interested. > 2) Timers: > > FreeBSD - Every 500ms, and every 200ms, the > _ENTIRE_ TCP socket list is walked, > yes in it's entirety. How the fuck > does this scale? It doesn't, and it's one of the biggest problems with the code. It is, however, a second order problem (7/second compared to 1000's/second in the first order linear list search per packet case). I plan to re-visit this eventually, but it's not been very high priority. - -DG David Greenman Core-team/Principal Architect, The FreeBSD Project ------- End of Forwarded Message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199703011628.IAA05199>