Date: Wed, 11 Apr 2001 16:31:56 -0700 (PDT) From: John Baldwin <jhb@FreeBSD.org> To: Alfred Perlstein <bright@wintelcom.net> Cc: freebsd-hackers@FreeBSD.org, Dan Phoenix <dphoenix@bravenet.com>, Doug White <dwhite@resnet.uoregon.edu> Subject: Re: lockf in apache Message-ID: <XFMail.010411163156.jhb@FreeBSD.org> In-Reply-To: <20010411161858.T15938@fw.wintelcom.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On 11-Apr-01 Alfred Perlstein wrote: > * Doug White <dwhite@resnet.uoregon.edu> [010411 16:07] wrote: >> On Tue, 10 Apr 2001, Alfred Perlstein wrote: >> >> > Basically, when apache is listening on multiple IPs/ports it needs >> > to select() on several filedescriptors. The problem (under FreeBSD >> > at least) is that whenever you have some process select()'ing on >> > a descriptor and another process wants to do the same you get a >> > "select collision", a collision requires that all processes waiting >> > on the same select channel wake up then reassert thier desire to >> > select. So... if you have 500 apache processes select()'ing and >> > one wakes up to service a request, finished serving, then goes to >> > select again, all the rest (499) have to wake up and reaffirm thier >> > desire to select(). >> >> We haven't applied wakeup_one() to select() yet? (I think I've argued >> about this before.) >> >> Someone get cracking! :) > > I'm not sure it's possible without redesigning the way select works. Select does a wakeup_one() if there's not a collision on a fd. If there is a collision, you need to do a full wakeup() since wakeup_one() on &selwait could easily just wake up a process waiting on some other fd and not a process waiting on the fd in question. xref. sys/kern/sys_generic.c, specifically selrecord() and selwakeup(). -- John Baldwin <jhb@FreeBSD.org> -- http://www.FreeBSD.org/~jhb/ PGP Key: http://www.baldwin.cx/~john/pgpkey.asc "Power Users Use the Power to Serve!" - http://www.FreeBSD.org/ 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?XFMail.010411163156.jhb>