Lento SSD + dm-crypt com criptografia Luks no Ubuntu 12.10

9

Eu tenho um SSD de 128 GB instalado no meu laptop (Samsung 840 Pro) em uma interface Sata 3. Este laptop também tem um processador Intel Ivy Bridge de 3210m i5 e 8 GB de RAM.

Eu instalei o Ubuntu 12.10, usando o instalador gráfico para obter a criptografia de disco completo. Estou meio que desapontado, porque esperava que as especificações tivessem resultados melhores do que o que recebo.

Enquanto olhamos para esta página de Análise comparativa de SSDs , afirma que o meu processador consegue:

  • ~ 500 MB / s: com AES-NI
  • ~ 200 MB / s: sem AES-NI

Olhando para os números que recebo, acho que posso não ter o AES-NI ativado. Mas primeiro ...

A leitura de dados não criptografados é rápida:

# hdparm -Tt /dev/sda1

/dev/sda1:
 Timing cached reads:   14814 MB in  2.00 seconds = 7411.70 MB/sec
 Timing buffered disk reads: 242 MB in  0.48 seconds = 502.75 MB/sec

Isso é realmente próximo das especificações do meu SSD de "até 530 MB / s" e fazer um teste dd produz resultados semelhantes aos acima.

Escrever dados criptografados também é rápido com dm-crypt (caso contrário, com o eCryptfs, o desempenho na gravação é péssimo, inferior a 100 MB / s), sendo os números próximos da especificação SSD (acho que a gravação está em buffer ou algo assim):

# dd if=/dev/zero of=tempfile bs=1M count=1024 conv=fdatasync,notrunc
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.93896 s, 365 MB/s

No entanto, a leitura de dados criptografados é outra história:

# echo 3 > /proc/sys/vm/drop_caches
# dd if=tempfile of=/dev/null bs=1M count=1024

1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 5.85956 s, 183 MB/s

Enquanto escrevia esta mensagem, tive sorte de obter 183 MB / s, porque esse número varia. Normalmente, é algo em torno de 150 MB / s, mas eu também cheguei perto de 300 MB / s em uma inicialização recente, mas o desempenho cai gradualmente para menos de 200 MB / s sem que eu inicie nenhum aplicativo. Observe que, durante a realização deste teste, não tenho outros processos que estejam fazendo E / S (como visto em iotop ).

Além disso, aqui está o teste com hdparm , que produz resultados piores:

 # hdparm -Tt /dev/mapper/sda2_crypt 

 /dev/mapper/sda2_crypt:
  Timing cached reads:   14816 MB in  2.00 seconds = 7412.86 MB/sec
  Timing buffered disk reads: 422 MB in  3.01 seconds = 140.11 MB/sec

Eu também experimentei o experimento olhando htop ... não sei como interpretar o que eu vi, já que o processador i5 faz Hyper-Threading, mas 2 threads de 4, onde cerca de 73% de uso durante o teste, enquanto os outros 2 tópicos não foram utilizados. De fato, se eu começar 2 processos que estão lendo com dd de 2 arquivos distintos (para evitar buffer), então iotop informa um total de aproximadamente 400 MB / s. Então, isso definitivamente parece que está ligado à CPU.

Minha decepção vem do fato de que meu processador i5 é capaz de AES-NI . Dados não criptografados estão sendo lidos em mais de 500 MB / s usando os mesmos testes que fiz acima. Então estamos falando de uma partição criptografada sendo pelo menos 3 vezes mais lenta.

Eu realmente não sei se a minha instalação do dm-crypt está usando o AES-NI. Aqui está a saída de lsmod :

 # lsmod | grep aes
 aesni_intel            51038  35 
 cryptd                 20404  10 ghash_clmulni_intel,aesni_intel
 aes_x86_64             17256  1 aesni_intel

Aqui está a saída de cryptsetup :

 # cryptsetup status sda2_crypt
 /dev/mapper/sda2_crypt is active and is in use.
   type:    LUKS1
   cipher:  aes-xts-plain64
   keysize: 512 bits
   device:  /dev/sda2
   offset:  4096 sectors
   size:    249565184 sectors
   mode:    read/write
   flags:   discards

Então, isso é esperado? O AES-NI não deveria melhorar as coisas mais do que isso?

Além disso, como desativar o AES-NI para ver se há alguma diferença? E talvez eu deva habilitá-lo de alguma forma, mas não encontrei nenhuma dica nas minhas pesquisas.

Obrigado,

    
por Alexandru Nedelcu 22.01.2013 / 13:22

2 respostas

5

O seu Samsung 840 Pro suporta criptografia AES de hardware. Se o BIOS do seu laptop suportar o modo de recurso de segurança ATA, configure as senhas principal e de usuário, você está com sorte.

Definindo a senha mestra do ATA no BIOS e, em seguida, fazendo um apagamento seguro da unidade, o firmware da unidade deve gerar novas chaves AES aleatórias. Após o apagamento seguro, certifique-se de ter definido boas senhas mestre e de usuário do ATA. Até onde consegui estabelecer (veja o meu post aqui link ) a Samsung também criptografa suas chaves AES com sua senha ATA.

Isso lhe dará criptografia AES de velocidade máxima, sem necessidade de software.

    
por Charl Botha 13.03.2013 / 08:56
3

Há uma configuração incorreta no Ubuntu que resulta no módulo aesni_intel não sendo carregado com antecedência suficiente para lidar com criptografia para dispositivos de inicialização desbloqueada. Consegui consertar isso nas minhas máquinas fazendo:

sudo vim /etc/initramfs-tools/modules

Abaixo da última linha, adicione

# enable h/w accelerated encryption
cryptd
aes_x86_64
aesni_intel

Em seguida, execute

sudo update-initramfs -u -k all

reinicie e aproveite. Depois disso, em um SSD semelhante, eu estava vendo 500 MB / s de leitura e gravação com uso insignificante de CPU.

Detalhes completos sobre esse bug estão no link

    
por Devin Lane 10.12.2014 / 05:25