Quoting Justus Winter (2014-12-10 12:59:43) > Somewhat less synthetic: > > % bash do_pipebench.bash > Piping 1024 MByte from zero to null. > (dd if=zero bs=X count=overall/X | dd of=null bs=X) > 4096 8192 12288 16384 32768 65536 > ‘libc.so.0.3’ -> ‘libc.so.586asm’ > 30.78 15.69 12.11 9.47 5.63 3.90 > ‘libc.so.0.3’ -> ‘libc.so.1page’ > 28.57 15.54 10.85 8.13 4.39 2.67 > ‘libc.so.0.3’ -> ‘libc.so.2page’ > 29.32 15.30 10.13 8.23 4.51 2.70 > ‘libc.so.0.3’ -> ‘libc.so.3page’ > 29.94 17.07 10.93 8.40 4.55 2.62 > ‘libc.so.0.3’ -> ‘libc.so.4page’ > 28.88 16.64 11.46 8.16 4.39 2.63 > ‘libc.so.0.3’ -> ‘libc.so.inftypage’ > 30.21 14.75 12.33 9.69 6.01 3.91
The effect is more pronounced with pflocal using more memcpy instead of memmove (bcopy is implemented using memmove). % bash ~/do_pipebench.bash Piping 1024 MByte from zero to null. (dd if=zero bs=X count=overall/X | dd of=null bs=X) 4096 8192 12288 16384 32768 65536 ‘libc.so.0.3’ -> ‘libc.so.586asm’ 32.57 17.30 12.15 9.38 5.52 3.89 ‘libc.so.0.3’ -> ‘libc.so.1page’ 29.62 14.26 10.19 7.42 3.43 1.73 ‘libc.so.0.3’ -> ‘libc.so.2page’ 31.78 14.01 8.69 7.71 3.81 1.81 ‘libc.so.0.3’ -> ‘libc.so.3page’ 30.90 15.62 8.37 7.12 3.54 1.82 ‘libc.so.0.3’ -> ‘libc.so.4page’ 31.14 16.40 12.00 7.47 3.81 1.91 ‘libc.so.0.3’ -> ‘libc.so.inftypage’ 29.83 16.78 11.50 9.50 5.65 3.87 do_pipebench.bash is in the time-memcpy repository. Justus