Date: Thu, 22 Jul 1999 16:43:31 -0500 From: "Jason Young" <doogie@anet-stl.com> To: "Matthew Dillon" <dillon@apollo.backplane.com>, "Papezik Milon" <papezik@pvt.net> Cc: <hackers@FreeBSD.ORG> Subject: RE: Squid - a bug in src/sys/kern/uipc_socket.c Message-ID: <000501bed48b$3de34600$8a9791d1@y> In-Reply-To: <199907222056.NAA87639@apollo.backplane.com>
next in thread | previous in thread | raw e-mail | index | archive | help
It's been committed before, and broke many things (X and CVSup come to mind). I have it compiled in locally on a few machines but it's definitely not suitable for general distribution until a solution is found that doesn't break applications. Jason Young accessUS Chief Network Engineer > -----Original Message----- > From: owner-freebsd-hackers@FreeBSD.ORG > [mailto:owner-freebsd-hackers@FreeBSD.ORG]On Behalf Of > Matthew Dillon > Sent: Thursday, July 22, 1999 3:57 PM > To: Papezik Milon > Cc: hackers@FreeBSD.ORG > Subject: Re: Squid - a bug in src/sys/kern/uipc_socket.c > > > This isn't really a bug since this is a TCP connection. > TCP makes > no guarentees that atomic writes will show up as atomic > reads, and > the squid code shouldn't be making that assumption. > > On the otherhand, the proposed fix appears to be an > excellent performance > optimization. It is basically only turning 'atomic' on > for relatively > small writes, which should be a win for a receiver > whether over a > localhost connection or a real network. I can't > imagine that it would > cause a performance loss in any other situation -- it > might result in > a slightly smaller-then-full-sized TCP packet > occassionally in a stream > but that's about it. > > I think committing this would be beneficial. Would > someone w/ commit > privs care to review and then commit this bit? > > -Matt > Matthew Dillon > <dillon@backplane.com> > > :Hi, > : > :please don't kill me if it's "well known issue": > : > :I've found that there is a report on Squid site, which > :describes a problem with FreeBSD IPC and includes suggested fix. > :I verified that this suggested fix is not included in 3.2-RELEASE. > : > :I wonder, if it is really a bug, as I cannot find it in PR > database. > : > :Could someone please comment on this report/bug/suggested fix > :and if/when the fix could/will be submited? > : > :original URL: > :http://squid.nlanr.net/Squid/FAQ/FAQ-14.html#ss14.2 > : > : Thanks in advance, > : Milon > :-- > :papezik@pvt.net > : > : > :------------ bug report and suggested fix --------- > :mbuf size > : > :We noticed an odd thing with some of Squid's interprocess > communication. > :Often, output from the dnsserver processes would NOT be read in one > :chunk. With full debugging, it looks like this: > : > :1998/04/02 15:18:48| comm_select: FD 46 ready for reading > :1998/04/02 15:18:48| ipcache_dnsHandleRead: Result from > DNS ID 2 (100 > :bytes) > :1998/04/02 15:18:48| ipcache_dnsHandleRead: Incomplete reply > :....other processing occurs... > :1998/04/02 15:18:48| comm_select: FD 46 ready for reading > :1998/04/02 15:18:48| ipcache_dnsHandleRead: Result from DNS ID 2 (9 > :bytes) > :1998/04/02 15:18:48| ipcache_parsebuffer: parsing: > :$name www.karup.com > :$h_name www.karup.inter.net > :$h_len 4 > :$ipcount 2 > :38.15.68.128 > :38.15.67.128 > :$ttl 2348 > :$end > : > :Interestingly, it is very common to get only 100 bytes on the first > :read. When two read() calls are required, this adds > additional latency > :to the overall request. On our caches running Digital > Unix, the median > :dnsserver response time was measured at 0.01 seconds. On > our FreeBSD > :cache, however, the median latency was 0.10 seconds. > : > :Here is a simple patch to fix the bug: > : > :=================================================================== > :RCS file: /home/ncvs/src/sys/kern/uipc_socket.c,v > :retrieving revision 1.40 > :retrieving revision 1.41 > :diff -p -u -r1.40 -r1.41 > :--- src/sys/kern/uipc_socket.c 1998/05/15 20:11:30 1.40 > :+++ /home/ncvs/src/sys/kern/uipc_socket.c 1998/07/06 > 19:27:14 > :1.41 > :@@ -31,7 +31,7 @@ > : * SUCH DAMAGE. > : * > : * @(#)uipc_socket.c 8.3 (Berkeley) 4/15/94 > :- * $Id: FAQ.sgml,v 1.75 1999/07/06 16:07:36 wessels Exp $ > :+ * $Id: FAQ.sgml,v 1.75 1999/07/06 16:07:36 wessels Exp $ > : */ > : > : #include <sys/param.h> > :@@ -491,6 +491,7 @@ restart: > : mlen = MCLBYTES; > : len = min(min(mlen, resid), space); > : } else { > :+ atomic = 1; > : nopages: > : len = min(min(mlen, resid), space); > > > > To Unsubscribe: send mail to majordomo@FreeBSD.org > with "unsubscribe freebsd-hackers" in the body of the message > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?000501bed48b$3de34600$8a9791d1>