I am developing something that consists of a program I made generating output, and a program I did not make (and would very much like not to have to alter it) consuming it. I am using a named FIFO created with mkpipe. I suspect I have a performance bottleneck due to the smallness of the Linux FIFO buffer. (And such size cannot be changed without patching the kernel.)
Is there an alternative FIFO-like thing I can use with a buffer of, say, a couple dozen megabytes? The not-made-by-me program can read from anything that can have a filesystem name - /dev/stdin, a named pipe (like it's doing now), a real file, /dev/any-character-device...
Even a third-party free kernel module could do, if no other alternative is available.
mkfifo fifo; yes >> fifo & time (head -1000000000 < fifo | wc -c). Then divide the amount of characters (2000000000) by the time (in my case, 23.5 s). I get more than 80 MB/s. What do you get? – angus Jun 4 '12 at 21:17strace. Post the trace if you have trouble interpreting it.) How much data do you have in total? How long does the processing take? – Gilles Jun 4 '12 at 23:38