Whats the default zfs checksum/hash for the block pointer & uberblock, when a new pool is created? For [user] data blocks its fletcher4. In the results below, the default checksum algo [zfs get checksum] checksum=on & fletcher4 gave similar results, but not exact [hence confusing].
Is there something else going on when checksum=on [default] & it specifically being set to fletcher4 to account for the considerable difference in read speed [even while ignoring the slight difference in write speed]? This gets even more confusing when comparing fletcher2 results to fletcher4!
6 3TB HDD:
write 20.48 GB via dd, dd if=/dev/zero of=/test/dd.tst bs=1024000 count=20000
read 20.48 GB via dd, dd if=/test/dd.tst of=/dev/null bs=1024000
raidz/no parity
raidz1+0/mirror+stripe
raidz1x2 vdev/raid1+stripe
raidz2
Is there something else going on when checksum=on [default] & it specifically being set to fletcher4 to account for the considerable difference in read speed [even while ignoring the slight difference in write speed]? This gets even more confusing when comparing fletcher2 results to fletcher4!
6 3TB HDD:
write 20.48 GB via dd, dd if=/dev/zero of=/test/dd.tst bs=1024000 count=20000
read 20.48 GB via dd, dd if=/test/dd.tst of=/dev/null bs=1024000
raidz/no parity
Code:
checksum=on [default]
real 32.1 user 0.0 sys 15.3 _20.48 GB in 32.1s = 638.01 MB/s Write
real 32.8 user 0.0 sys 17.3 _20.48 GB in 32.8s = 624.39 MB/s Read
fletcher2
real 29.4 user 0.0 sys 11.9 _20.48 GB in 29.4s = 696.60 MB/s Write
real 27.5 user 0.0 sys 14.9 _20.48 GB in 27.5s = 744.73 MB/s Read
fletcher4
real 32.3 user 0.0 sys 14.3 _20.48 GB in 32.3s = 634.06 MB/s Write
real 28.4 user 0.0 sys 16.9 _20.48 GB in 28.4s = 721.13 MB/s Read
sha256
real 1:22.3 user 0.0 sys 15.6 _20.48 GB in 82.3s = 248.85 MB/s Write
real 1:27.6 user 0.0 sys 12.3 _20.48 GB in 87.6s = 233.79 MB/s Read
raidz1+0/mirror+stripe
Code:
checksum=on [default]
real 54.8 user 0.0 sys 17.9 _20.48 GB in 54.8s = 373.72 MB/s Write
real 39.5 user 0.0 sys 15.5 _20.48 GB in 39.5s = 518.48 MB/s Read
fletcher2
real 50.2 user 0.0 sys 13.2 _20.48 GB in 50.2s = 407.97 MB/s Write
real 43.2 user 0.0 sys 17.1 _20.48 GB in 43.2s = 474.07 MB/s Read
fletcher4
real 57.8 user 0.0 sys 15.3 _20.48 GB in 57.8s = 354.33 MB/s Write
real 37.6 user 0.0 sys 17.9 _20.48 GB in 37.6s = 544.68 MB/s Read
sha256
real 1:29.0 user 0.0 sys 17.4 _20.48 GB in 89.0s = 230.11 MB/s Write
real 1:33.9 user 0.0 sys 12.9 _20.48 GB in 93.9s = 218.10 MB/s Read
raidz1x2 vdev/raid1+stripe
Code:
checksum=on [default]
real 44.2 user 0.0 sys 15.5 _20.48 GB in 44.2s = 463.35 MB/s Write
real 1:29.4 user 0.0 sys 19.6 _20.48 GB in 89.4s = 229.08 MB/s Read
fletcher2
real 46.2 user 0.0 sys 15.3 _20.48 GB in 46.2s = 443.29 MB/s Write
real 1:22.9 user 0.0 sys 19.6 _20.48 GB in 82.9s = 247.04 MB/s Read
fletcher4
real 50.7 user 0.0 sys 14.0 _20.48 GB in 50.7s = 403.94 MB/s Write
real 44.9 user 0.0 sys 18.9 _20.48 GB in 44.9s = 456.12 MB/s Read
sha256
real 1:29.9 user 0.0 sys 13.3 _20.48 GB in 89.9s = 227.81 MB/s Write
real 1:36.3 user 0.0 sys 13.2 _20.48 GB in 96.3s = 212.67 MB/s Read
raidz2
Code:
checksum=on [default]
real 55.0 user 0.0 sys 15.3 _20.48 GB in 55.0s = 372.36 MB/s Write
real 43.3 user 0.0 sys 15.4 _20.48 GB in 43.3s = 472.98 MB/s Read
fletcher2
real 56.1 user 0.0 sys 16.3 _20.48 GB in 56.1s = 365.06 MB/s Write
real 37.7 user 0.0 sys 22.0 _20.48 GB in 37.7s = 543.24 MB/s Read
fletcher4
real 53.5 user 0.0 sys 14.5 _20.48 GB in 53.5s = 382.80 MB/s Write
real 39.3 user 0.0 sys 20.7 _20.48 GB in 39.3s = 521.12 MB/s Read
sha256
real 1:51.2 user 0.0 sys 15.9 _20.48 GB in 111.2s = 184.17 MB/s Write
real 1:32.4 user 0.0 sys 16.3 _20.48 GB in 92.4s = 221.65 MB/s Read
Last edited: