On Sun, Jul 12, 2009 at 10:45:09PM -0700, Matthew Dillon wrote: > I have substantially rewritten kern/sys_pipe.c, which is our support > for pipes. It should work quite well on a SMP box now. Performance > on UP boxes might be a bit lower then the old code but the difference > should not be noticable for any production workload. > > To test the SMP improvements set sysctl kern.pipe.mpsafe=1. > > The latest code significantly improves synchronous communication over > a pipe (not a socket, sorry), reducing (Awrite,Bread,Bwrite,Aread) > sequences from 7uS to 2uS on my test box. The pipe1 test (from > /usr/src/test/sysperf) tests this. > > The latest code is now able to fully saturated all available cpus > when running multiple copies of the pipe2 test (from > /usr/src/test/sysperf).
Recently I occasionally see processes stuck on `piperd' state, probably after it's been turned on by default. The stuck processes can be interrupted and re-issued, though. It happened on both vkernel and the real kernel. The first time I saw it was when `make upgrade' was performing `./MAKEDEV upgrade', so I thought it was temporary back then.
