我正在开发嵌入式软件,其中我使用 cryptsetup 通过 NFS 以太网标准连接创建加密的磁盘空间...我有兴趣了解该磁盘达到的写入速度(简单的性能分析)。
首先我运行一个标准基准测试
root@sbc-lynx:/mnt# cryptsetup benchmark
# Tests are approximate using memory only (no storage IO).
PBKDF2-sha1 33098 iterations per second for 256-bit key
PBKDF2-sha256 52851 iterations per second for 256-bit key
PBKDF2-sha512 34492 iterations per second for 256-bit key
PBKDF2-ripemd160 29789 iterations per second for 256-bit key
PBKDF2-whirlpool 7062 iterations per second for 256-bit key
# Algorithm | Key | Encryption | Decryption
aes-cbc 128b 26.7 MiB/s 24.5 MiB/s
serpent-cbc 128b 6.6 MiB/s 7.3 MiB/s
twofish-cbc 128b 10.2 MiB/s 11.0 MiB/s
aes-cbc 256b 21.4 MiB/s 20.8 MiB/s
serpent-cbc 256b 6.6 MiB/s 7.3 MiB/s
twofish-cbc 256b 10.2 MiB/s 10.2 MiB/s
aes-xts 256b 9.0 MiB/s 9.0 MiB/s
serpent-xts 256b 7.0 MiB/s 7.2 MiB/s
twofish-xts 256b 10.7 MiB/s 10.9 MiB/s
aes-xts 512b 7.1 MiB/s 7.0 MiB/s
serpent-xts 512b 7.0 MiB/s 7.1 MiB/s
twofish-xts 512b 10.7 MiB/s 10.9 MiB/s
出于测试目的,我选择了 eaes-cbc-256,它似乎具有良好的性能。
但现在我想测试一下实际达到的速度。我的 NFS 挂载在 /mnt/ 中,加密文件夹正确挂载在 /home/encryptroot/ 中。我用了:
time dd bs=5M count=1 if=/dev/zero of=/mnt/ppx conv=fsync
1+0 records in
1+0 records out
real 0m0.556s
user 0m0.000s
sys 0m0.110s
time dd bs=5M count=1 if=/dev/zero of=/home/encryptroot/ppx conv=fsync
1+0 records in
1+0 records out
real 0m1.104s
user 0m0.000s
sys 0m0.180s
从这些结果中,我在普通文件夹中获得了几乎 9 MB/s 的速度
,而对于加密文件夹,我获得了 4 MB/s
问题 1) 这是评估写入速度的有效方法吗?使用参数 fsync 这应该评估用于真正将文件复制到磁盘中的时间(而不是复制到缓存中)?
我对此结果并不满意,因为即使有 20 MB/s 的加密潜力,我也无法填满可用的总带宽(大约 9 MB/s)。
最终调查:我更改了密码并使用了默认的 aes-xts,它应该达到我重复的最大 9MB/s
time dd bs=5M count=1 if=/dev/zero of=/home/encryptroot/ppx conv=fsync
1+0 records in
1+0 records out
real 0m2.281s
user 0m0.000s
sys 0m0.180s
获得2.2MB/s的写入速度。
Question2)在分析这些结果时我还缺少其他需要考虑的因素吗? xts 的开销是否可能如此之高而降低了吞吐量?还有其他测试建议吗?
谢谢