Re: thundering pipe herds

2020-11-23 Thread David Holland
On Tue, Nov 24, 2020 at 09:09:59AM +1100, matthew green wrote: > > @@ -395,9 +401,8 @@ pipeunlock(struct pipe *pipe) > >KASSERT(pipe->pipe_state & PIPE_LOCKFL); > > > >pipe->pipe_state &= ~PIPE_LOCKFL; > > - if (pipe->pipe_state & PIPE_LWANT) { > > - pipe->pipe_state &=

re: thundering pipe herds

2020-11-23 Thread matthew green
> @@ -395,9 +401,8 @@ pipeunlock(struct pipe *pipe) > KASSERT(pipe->pipe_state & PIPE_LOCKFL); > > pipe->pipe_state &= ~PIPE_LOCKFL; > - if (pipe->pipe_state & PIPE_LWANT) { > - pipe->pipe_state &= ~PIPE_LWANT; > - cv_broadcast(>pipe_lkcv); > + if

thundering pipe herds

2020-11-23 Thread David Holland
mjg at freebsd says that their pipes have a thundering herd problem that manifests in make's token pipe stuff at high -j values. We have the same logic, and it's easily fixed. Completely untested patch follows; does anyone object to this assuming that it works (possibly after minor changes)?