Re:The Effect of Pipe Capacity on Unix Pipeline Performance
by wnoise on Thursday February 27, 2020 @12:15PM
(#22435279)
Most shells don't have great support for making even non-linear graphs of (anonymous) pipe connections (though note that wilder, even dynamic graphs are possible with the "coproc" builtin of e.g. ksh, zsh, or modern bash).
However, arbitrary graphs are possible with the system calls available -- just create all the pipes in the spawning process with pipe(), and after fork(), but before exec() move the right ends into the file descriptors 0, 1, and 2 with dup2().
I wanted to see:
- What happens when piping an 8 TiB file through awk to be stored on another physical volume (proly want to use xfs).
- A graph of various block sizes, various file sizes, pipeline sizes and timing using a HPET. I don't know how you make an 2+-way pipe like it the diagrams except by process substitution, except that doesn't always work and you can't create cycles without creating FIFO (named pipes):