On 05/16/2014 02:24 AM, Linda Walsh wrote: > On programs that allow input and output by specifying computer-base2 powers > of K/M/G OR decimal based powers of 10, > > If the input units are specified in in powers of 2 then the output should be > given in the same units. > > Example: > > dd if=/dev/zero of=/dev/null bs=256M count=2 > ... So 512MB, total -... but what do I see: > 536870912 bytes (537 MB) copied, 0.225718 s, 2.4 GB/s > > Clearly 256*2 != 537. > > At the very least this violates the design principle of 'least surprise' > and/or 'least astonishment'. I agree that the units representation is unfortunate, but an accident of history. POSIX species 'k' and 'b' to mean 1024 and 512 respectively. Standards wise 'k' should really mean 1000 and 'K' 1024. Then extending from that we now have (which we can't change for compat reasons): k=K=kiB=KiB=1024 kb=KB=1000 M=MiB=1024^2 MB=1000^2 ... However when _outputting) the stats line we could use the least ambiguous and most standard unit, which would be the IEC unit. The attached patch changes the output to: $ dd if=/dev/zero of=/dev/null bs=256M count=2 2+0 records in 2+0 records out 536870912 bytes (512 MiB) copied, 0.152887 s, 3.3 GiB/s thanks, Pádraig.