From owner-freebsd-bugs Mon Nov 2 09:30:00 1998 Return-Path: Received: (from majordom@localhost) by hub.freebsd.org (8.8.8/8.8.8) id JAA10642 for freebsd-bugs-outgoing; Mon, 2 Nov 1998 09:30:00 -0800 (PST) (envelope-from owner-freebsd-bugs@FreeBSD.ORG) Received: from freefall.freebsd.org (freefall.FreeBSD.ORG [204.216.27.21]) by hub.freebsd.org (8.8.8/8.8.8) with ESMTP id JAA10636 for ; Mon, 2 Nov 1998 09:29:59 -0800 (PST) (envelope-from gnats@FreeBSD.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.8.8/8.8.5) id JAA26749; Mon, 2 Nov 1998 09:30:00 -0800 (PST) Date: Mon, 2 Nov 1998 09:30:00 -0800 (PST) Message-Id: <199811021730.JAA26749@freefall.freebsd.org> To: freebsd-bugs@FreeBSD.ORG From: Tony Finch Subject: Re: kern/8500: FreeBSD 3.0 thread scheduler is broken Reply-To: Tony Finch Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.org The following reply was made to PR kern/8500; it has been noted by GNATS. From: Tony Finch To: peter@netplex.com.au Cc: freebsd-gnats-submit@freebsd.org Subject: Re: kern/8500: FreeBSD 3.0 thread scheduler is broken Date: Mon, 2 Nov 1998 17:41:39 +0000 Peter Wemm wrote: > HighWind Software Information wrote: > > > The only alternatives are to use the aio/lio syscalls (which work), or > > rfork(). libc_r could probably be modified to use rfork() to have the > > read/write/open/close/etc done in parallel. > > > > I don't think that is necessary. > > It is if you want the threading to continue while the disk is grinding > away. aio_read() and aio_write() would probably be enough to help file > IO, but open() will still be blocking. > > Squid has some fairly extensive async disk-IO routines. They happen to > use pthreads as a mechanism of having child processes do the blocking > work. FreeBSD could use rfork() for arranging the blocking stuff in child > processes with shared address space. It would be a lot of work though, > and would be a problem on SMP systems. We have been trying out Squid on 3.0 because of the possibilities offered by async IO, but so far we haven't managed to get it to work satisfactorily. I was also thinking about the possibility of using rfork() to implement threads -- the Linux pthreads implementation does this (except that Linux has clone() instead of rfork() and the interface is slightly different). What are the SMP issues? Tony. -- gg yhf**f.a.n.finch fanf@demon.net dot@dotat.at To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message