Ich arbeite an eingebetteter Software, bei der ich Cryptsetup verwendet habe, um einen verschlüsselten Speicherplatz über eine NFS-Ethernet-Standardverbindung zu erstellen ... Ich bin daran interessiert, die Schreibgeschwindigkeit zu verstehen, die diese Festplatte erreicht (einfache Leistungsanalyse).
Zuerst führe ich einen Standard-Benchmark aus
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
Nur zu Testzwecken habe ich eaes-cbc-256 ausgewählt, das eine gute Leistung zu haben scheint.
Aber jetzt möchte ich die tatsächlich erreichte Geschwindigkeit testen. Mein NFS ist in /mnt/ gemountet und der verschlüsselte Ordner ist korrekt in /home/encryptroot/ gemountet. Ich habe verwendet:
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
Aus diesen Ergebnissen habe ich im normalen Ordner eine Geschwindigkeit von fast 9 MB/s ermittelt,
während ich im verschlüsselten Ordner 4 MB/s ermittelt habe.
Frage 1) Ist dies eine gültige Methode zur Bewertung der Schreibgeschwindigkeit? Mit dem Parameter fsync sollte dies die Zeit ermitteln, die zum tatsächlichen Kopieren der Datei auf die Festplatte benötigt wird (nicht zum Kopieren in Caches)?
Mit diesem Ergebnis bin ich nicht zufrieden, da ich mit einer möglichen Verschlüsselung von 20 MB/s die gesamte verfügbare Bandbreite (ca. 9 MB/s) nicht ausschöpfen kann.
Abschließende Untersuchung: Ich habe die Verschlüsselung geändert und den Standard aes-xts verwendet, der maximal 9 MB/s erreichen sollte. Ich habe wiederholt
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
Erzielung einer Schreibgeschwindigkeit von 2,2 MB/s.
Frage 2) Gibt es noch andere Faktoren, die ich bei der Analyse dieser Ergebnisse nicht berücksichtige? Ist es möglich, dass der Overhead des XTS so hoch ist, dass er den Durchsatz reduziert? Und haben Sie andere Tests vorzuschlagen?
Danke