(Linus, look away, I'll resubmit it for 2.5.0) The Linux pipe implementation is extremely inefficient for long, blocking data transfers with pipes (e.g. what gcc -pipe does): * 2 memcopies: user space->kernel buffer->user space * 2 context switches for each transfered page. Last march David Miller proposed using kiobuf for these data transfers, I've written a new patch for 2.4. (David's original patch contained 2 bugs: it doesn't protect properly against multiple writers and it causes a BUG() in pipe_read() when data is stored in both the kiobuf and the normal buffer) -- Manfred