On 18 Nov, Bosko Milekic wrote:
>
> Although I've presently received little feedback on this...
>
> I found a potential problem with the patch, so I am taking the following
> approach to bypass it. I have a feeling that there's another way, though
> (perhaps better, conceptually).
>
> Consider a case where there are 40 instances of tsleep all waiting for an mbuf
> to be freed. Consider a single mbuf beeing freed, this would awake _all_ the
> sleepers, the first one "queued" would succeed in the [retried] MGET whereas the
> other 39 will fail and return NULL (not necessarily having waited the designated
> mbuf_wait time).
>
> I am replacing the wakeup() in the wakeup procedure with a wakeup_one and adding
>......
Another place where a wakeup_one would be of great interest is the
point where multiple processes are select()ing on a listen socket. Every
incoming connection wakes every process to have them returning to user
mode, have one succeeding in accept() and N-1 failling and returning to
select(). It have been identified as a key improvement for, eg Apache,
but, AFAIK, there where no proposal to provide a solving feature
(sysctl-ized) in FBSD (Some work have been done in Linux, since a
well-known comparative benchmark offense). Would be even more usefull
in SMP context.
RN.
IaM
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message