William Park via Talk wrote on 2025-09-02 19:40:
I was doing one of those occasional backup of my root SSD to HD. They are identical size, so sector by sector. I took this occasion to see if blocksize (bs=) matters.
for i in {4,16,64,256}K {1,4,16,64}M; do echo ==== $i ==== dd if=/dev/sda of=/dev/sdi bs=$i sync done
No difference. All did 117MB/s.
Interesting. My memory was that I've seen where block size makes a difference, so I had to try for myself. Don't have exactly the same setup so used /dev/random for input and a file on a 5400RPM WD Red HD for output, changing the block size: $ for i in 1 1000 1000000 10000000 100000000 echo "*** block size: $i" rm ./dd-bs-test dd if=/dev/random of=./dd-bs-test bs=$i count=(math "100000000 / $i") end *** block size: 1 100000000 bytes (100 MB, 95 MiB) copied, 29.9448 s, 3.3 MB/s *** block size: 1000 100000000 bytes (100 MB, 95 MiB) copied, 0.148444 s, 674 MB/s *** block size: 1000000 100000000 bytes (100 MB, 95 MiB) copied, 0.112547 s, 889 MB/s *** block size: 10000000 100000000 bytes (100 MB, 95 MiB) copied, 0.115528 s, 866 MB/s *** block size: 100000000 100000000 bytes (100 MB, 95 MiB) copied, 0.132528 s, 755 MB/s So, in this situation (perhaps a flawed test?), there's a dramatic speedup going above bs=1, a significant speed improvement going above bs=1000, and slight decreases in speed going above bs=1,000,000. Similar results on an SSD, but *slower* on the low end and faster at bs=1000000 (1M). SSD results also slowly decline above bs=1M: *** block size: 1 100000000 bytes (100 MB, 95 MiB) copied, 42.0427 s, 2.4 MB/s *** block size: 1000 100000000 bytes (100 MB, 95 MiB) copied, 0.156072 s, 641 MB/s *** block size: 1000000 100000000 bytes (100 MB, 95 MiB) copied, 0.10943 s, 914 MB/s *** block size: 10000000 100000000 bytes (100 MB, 95 MiB) copied, 0.120185 s, 832 MB/s *** block size: 100000000 100000000 bytes (100 MB, 95 MiB) copied, 0.133916 s, 747 MB/s