* Matthew Dillon <[EMAIL PROTECTED]> [000125 11:51] wrote:
> 
> :OK, so let's say I did spend some time implementing it in terms of semget()
> :and semop().  Would you be totally apalled if the performance turned out to
> :be about the same as using a single socketpair?  Do you have a very strong
> :feeling that it should be significantly better.  [Again, under
> :3.4-release.]  I don't think I've done anything egregious, but things don't
> :seem much better.  Unfortunately, I'll have to wait until tomorrow morning
> :to rip things out and make a suitable example program for posting.
> :
> :Actually, the performance profile does seem different (for lower loads, the
> :semaphore solution seems more efficient), but the performance limits seem
> :much the same between the single socketpair and semaphore versions when I
> :starts using 16-20 worker processes.  It's possible that I'm doing
> :..
> :
> :Thanks,
> :scott
>     
>     Well, when all else fails --- go back to individual pipes.
> 
>     What else could be tried... you could try surrounding the read()
>     with an flock() pair.  I don't know if flock() uses the more optimal
>     wakeup code or not.

It doesn't, it wakes all processes blocking on the lock, the flock case
could be optimized but doesn't seem to be.

I think you probably want to experiment with pools attached to the
pipe, and you ought to be using pipe rather than socketpair.  Meaning
have a group of children share a pipe, but not more than N, where N
is where you start to see performance problems.

-Alfred


To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-hackers" in the body of the message

Reply via email to