AES-NI beschleunigte ZFS v31-Verschlüsselung in Solaris 11

AES-NI beschleunigte ZFS v31-Verschlüsselung in Solaris 11

Ich bin nicht ganz sicher, ob dies der richtige Ort für diese Frage ist. Wenn nicht, können Sie sie gerne dorthin verschieben, wo sie hinpasst.

Ich teste die Verschlüsselungsfunktion in ZFS v31 in einer Solaris 11.11.11 VM unter ESXi 5.0 auf meinem Laborrechner. Ich erhalte schreckliche Ergebnisse, wenn ich meinen verschlüsselten Ordner auf ddeinem RAIDZ3 mit 11 Festplatten teste.

dd-Benchmark:

# time dd if=/dev/zero of=/mypool/storage/dd.tst bs=1024000 count=10000
10000+0 records in
10000+0 records out

real    1m52.604s
user    0m0.010s
sys     0m2.715s
# time dd if=/mypool/storage/dd.tst of=/dev/null bs=1024000
10000+0 records in
10000+0 records out

real    3m15.547s
user    0m0.015s
sys     0m4.768s

Das bedeutet:

Write: 90.94 MB/s
Read: 52.366 MB/s

Bei 100 % CPU-Auslastung.

Ohne Verschlüsselung dagegen erreiche ich Schreibgeschwindigkeiten von fast 700 MB/s und Lesegeschwindigkeiten von etwa 900 MB/s.

Wie isainfo -vgezeigt wird AES an die VM weitergegeben.

# isainfo -v
64-bit amd64 applications
        xsave pclmulqdq aes sse4.2 sse4.1 ssse3 popcnt tscp cx16 sse3 sse2 sse
        fxsr mmx cmov amd_sysc cx8 tsc fpu
32-bit i386 applications
        xsave pclmulqdq aes sse4.2 sse4.1 ssse3 popcnt tscp ahf cx16 sse3 sse2
        sse fxsr mmx cmov sep cx8 tsc fpu

Ja, ich weiß, was Sie denken. Ich sollte es auf Bare Metal ausprobieren – und das habe ich tatsächlich getan. Ich erziele dieselben Ergebnisse, wenn ich Bare Metal ausführe. Der Grund, warum ich überhaupt erwähne, dass es sich um eine VM handelt, ist, dass AES-NI tatsächlich funktioniert und mir mit TrueCrypt in meiner 64-Bit-VM unter Windows 7 unter ESXi 5.0 mit den exakt gleichen Spezifikationen für die virtuelle Maschine fast die volle Geschwindigkeit bietet.

VM-Spezifikationen:

  • CPU: 2 Kerne (Intel Xeon E3-1235 @ 3,2 GHz)
  • Speicher: 8 GB
  • SAS-Controller (über Vt-d und PCI-Passthrough): 2x IBM M1015 (mit IT-Firmware geflasht)
  • Festplatte: 11x 2TB Samsung F4EG (über IBM M1015)

Wo soll ich mit der Fehlerbehebung beginnen? Hat jemand erfolgreich die AES-NI-beschleunigte Verschlüsselung in Solaris 11 verwendet? Wenn ja, wie ist Ihr Setup und mussten Sie etwas Besonderes tun?

Antwort1

AES-NI wird standardmäßig verwendet und es ist keine Konfiguration erforderlich. ZFS verwendet die Schnittstellen des Solaris Kernel Cryptographic Framework. Ein ganz einfacher DTrace-Befehl zeigt Ihnen also, ob die Funktionen aufgerufen wurden, die die Intel aesenc-Anweisungen verwenden:

#!/usr/sbin/dtrace -Fs
fbt::aes_encrypt_intel:entry
{
}

fbt::aes_encrypt_intel:return
{
}

Beachten Sie, dass wir, wenn wir die Verschlüsselung für ZFS aktivieren, auch die Prüfsumme automatisch auf sha256-mac umstellen. Ein fairerer Vergleich wäre also mit einem ZFS-Datensatz, der checksum=sha256 statt checksum=on (was Fletcher4 ist) hat.

Antwort2

Ich denke, Darren hat Ihre Frage beantwortet, aber Ihre Ergebnisse könnten auch durch ZFS und das OS-Caching verfälscht werden. Obwohl die Verwendung ddimmer noch nützlich sein kann, wäre es sinnvoller, etwas wie filebench(pkg benchmark/filebench unter Solaris 11) zu verwenden.

verwandte Informationen