I did some first tests using the test version of 2.1.7 on an M1 Ventura 13.2 with a 4xSSD RAIDZ1.
Performance looks much better than 2.1.6 - many thanks!
Regarding 'trust': sorry, I hadn't time to stress-test the consistency yet. Just a handful of files into a new encrypted dataset, which all worked.
A few things to note:
- 2.1.7 encryption is in general faster than 2.1.6 encryption, but depending on which encryption setting, is still quite a bit slower than un-encrypted.
- I found AES-CCM is in general faster than AES-GCM. So for example I can reach basically un-encrypted write speed with aes-256-ccm, but only about 40% write speed with aes-256-gcm; I think aes-256-gcm is the default for encryption=on
- Example write speeds on a dataset with recordsize=1M using AmorphousDiskMark4 and 1GiB data:
unencrypted: 1121 MB/s
aes-256-gcm + lz4: 415 MB/s
aes-256-ccm + lz4: 1095 MB/s
With ZFS 2.1.6 I got the same unencrypted write speed, but aes-256-gcm encrypted was only 340 MB/s and aes-128-ccm was only 633 MB/s.
I assume the AES256-gcm performance will improve with a future arm-assembly implementation of gcm?
A few more questions:
I do not see an arm-assembly of blake3 mentioned in sysctl, nor any acceleration for, e.g., lz4 compression:
- Code: Select all
zfs version
zfs-2.1.99-1723_gae7a8aca0
zfs-kmod-2.1.99-1723_gae7a8aca0
sysctl -a | grep zfs | grep _impl
kstat.zfs.darwin.tunable.zfs_vdev_raidz_impl: cycle [fastest] original scalar
kstat.zfs.darwin.tunable.icp_gcm_impl: cycle [fastest] generic
kstat.zfs.darwin.tunable.icp_aes_impl: cycle [fastest] generic aesv8
kstat.zfs.darwin.tunable.zfs.fletcher_4_impl: [fastest] scalar superscalar superscalar4
kstat.zfs.darwin.tunable.zfs.blake3_impl: cycle [fastest] generic sse2 sse41
kstat.zfs.darwin.tunable.zfs.sha256_impl: cycle [fastest] generic armv7 neon armv8-ce
kstat.zfs.darwin.tunable.zfs.sha512_impl: cycle [fastest] generic armv7 armv8-ce
How can I switch to a specific implementation rather than [fastest], resp. how can I check what [fastest] actually executes (especially for aes)?
Which checksum would you suggest to use?
Actually lundman, which checksum algorithm do you normally use yourself nowadays?