From owner-freebsd-hackers Sun Mar 8 11:54:41 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id LAA01198 for freebsd-hackers-outgoing; Sun, 8 Mar 1998 11:54:41 -0800 (PST) (envelope-from owner-freebsd-hackers@FreeBSD.ORG) Received: from friley585.res.iastate.edu (friley585.res.iastate.edu [129.186.167.85]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id LAA01190 for ; Sun, 8 Mar 1998 11:54:30 -0800 (PST) (envelope-from ccsanady@friley585.res.iastate.edu) Received: from friley585.res.iastate.edu (loopback [127.0.0.1]) by friley585.res.iastate.edu (8.8.8/8.8.8) with ESMTP id NAA03166; Sun, 8 Mar 1998 13:54:23 -0600 (CST) (envelope-from ccsanady@friley585.res.iastate.edu) Message-Id: <199803081954.NAA03166@friley585.res.iastate.edu> X-Mailer: exmh version 2.0.1 12/23/97 To: Marc Slemko cc: Julian Elischer , hackers@FreeBSD.ORG Subject: Re: kernel wishlist for web server performance In-reply-to: Your message of "Sun, 08 Mar 1998 08:38:38 MST." Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Date: Sun, 08 Mar 1998 13:54:22 -0600 From: Chris Csanady Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG >On Sat, 7 Mar 1998, Julian Elischer wrote: > >> > >> > Let me put it this way: how else do you propose to do copy avoidance to >> > avoid an extra copy going into the mbufs? The data must go from the >> > buffer cache to the network without any copy other than to the network >> > card itself. Why is your other method of doing this any less of a hack? >> [...] >> I would like to add here that in FreeBSD's unified VM/Buffer cache, >> a mmapped file IS the buffer cache >> so that a send() from an mmapped file IS copying direct fromt he buffer >> cache. Ther eis ONE copy.. that from the buffer cache, into the mbuf. > >But the point is that you still have to copy it into the mbuf, you still >have to use the memory for the mbuf, etc. This uses more CPU and memory >bandwidth, increases memory use, and means you may have to chop things up >smaller to avoid using too much memory for mbufs. And unless you introduce a special hack for each case that comes up, >To avoid that copy, you have two choices. First, you can play around with >copy avoidance for mmap() then send() or write(). This can be done with >COW, or page flipping. See the HP paper for more details on this >approach. Doing it this way is really an ugly hack and there are numerous >difficulties that crop up, making it less than desirable. Where is page flipping needed here? There is no data coming from user space with the mmap+aiosend.. >Or, you can use sendfile() and code it so it doesn't have to copy into >mbufs. This is easier because of where the data is coming from. > >Now, doing this right is dependent on having the right networking hardware >and networking drivers. It is, however, a very worthwhile feature from a >performance standpoint and more and more other OSes are adding it. > >> >> (assuming that the data got into the memory via DMA in the first place..) >> you may need to have a subprocess go through and tuch all the pages to >> get them into ram first.. >> >> > > >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