Langsames Cryptodevice

18/10/2012 - 11:22 von Holger Marzen | Report spam
Gegeben:
- PC mit Core i5
- SSD Crucial m4
- Ubuntu 11.10 mit Kernel 3.0
- Installation auf LVM auf LUKS-Device

Lesen von der SSD geht fix:
root@regen:~# hdparm -tT /dev/sda
/dev/sda:
Timing cached reads: 13862 MB in 1.99 seconds = 6956.94 MB/sec
Timing buffered disk reads: 1104 MB in 3.00 seconds = 367.43 MB/sec <
Lesen vom Cryptodevice bricht deutlich ein:
root@regen:~# hdparm -tT /dev/mapper/sda5_crypt
/dev/mapper/sda5_crypt:
Timing cached reads: 14492 MB in 1.99 seconds = 7272.60 MB/sec
Timing buffered disk reads: 266 MB in 3.02 seconds = 88.02 MB/sec <
CPU kann AES
Kernel-Config:
root@regen:/boot# grep -i aes config-3.0.22
CONFIG_SND_MAESTRO3=m
CONFIG_SND_MAESTRO3_INPUT=y
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_AES_X86_64=m
CONFIG_CRYPTO_AES_NI_INTEL=m
CONFIG_CRYPTO_DEV_PADLOCK_AES=m

AES-Module sind nicht geladen:
root@regen:/boot# lsmod | grep -i aes
root@regen:/boot#

Lade ich die Module, gibt es keine Verbesserung des Durchsatzes:
root@regen:/boot# lsmod | grep -i aes
aesni_intel 55539 0
cryptd 20360 1 aesni_intel
aes_x86_64 17208 1 aesni_intel

Ideen, wieso das Cryptodevice so langsam ist?
Beim hdparm aufs Cryptdevice hab ich ca. 40% CPU-Auslastung.
 

Lesen sie die antworten

#1 Thomas Bächler
18/10/2012 - 14:56 | Warnen spam
Am 18.10.2012 11:22, schrieb Holger Marzen:
CPU kann AES
Kernel-Config:
:/boot# grep -i aes config-3.0.22
CONFIG_SND_MAESTRO3=m
CONFIG_SND_MAESTRO3_INPUT=y
CONFIG_CRYPTO_AES=y
CONFIG_CRYPTO_AES_X86_64=m
CONFIG_CRYPTO_AES_NI_INTEL=m
CONFIG_CRYPTO_DEV_PADLOCK_AES=m

AES-Module sind nicht geladen:
:/boot# lsmod | grep -i aes
:/boot#



Da ist dein Fehler. Es wird die Standard-AES-Implementierung verwendet,
nicht die x86_64-ASM-optimierte und auch nicht die aesni-beschleunigte.

Lade ich die Module, gibt es keine Verbesserung des Durchsatzes:
:/boot# lsmod | grep -i aes
aesni_intel 55539 0
cryptd 20360 1 aesni_intel
aes_x86_64 17208 1 aesni_intel



Das Laden des Moduls allein nützt dir garnichts. Es muss beim Öffnen des
Crpyto-Containers geladen sein und benutzt werden - das geschieht
normalerweise automatisch.

Wenn ich das richtig sehe geht das wie folgt (hauptsàchlich geraten,
würde aber erklàren wieso bei mir alles gut ist und bei dir nicht):

1) Checke ob der Kernel AES kann. Wenn ja -> fertig.
2) Weise Userspace an, 'modprobe aes' auszuführen. Dies ergibt bei mir
folgende Module:

$ modprobe --resolve-alias aes
padlock_aes
aes_generic
aesni_intel
aes_x86_64

Da bei dir bereits AES verfügbar ist, wird 2) ausgelassen und die
langsame AES wird benutzt.

Mögliche Lösungen:
1) aesni_intel laden bevor du den Container öffnest.
2) aes_generic auch als Modul bauen.
3) aesni_intel fest in den Kernel bauen.

Bei mir:

/dev/sda:
Timing cached reads: 6272 MB in 2.00 seconds = 3137.17 MB/sec
Timing buffered disk reads: 732 MB in 3.01 seconds = 243.55 MB/sec

/dev/mapper/pv:
Timing cached reads: 6350 MB in 2.00 seconds = 3176.34 MB/sec
Timing buffered disk reads: 596 MB in 3.01 seconds = 198.07 MB/sec

Ist auch eine Crucial M4, allerdings nur über SATA-II angeschlossen, auf
einem i5 erster Generation.

Ähnliche fragen