Criptografia ZFS v31 acelerada AES-NI no Solaris 11

Criptografia ZFS v31 acelerada AES-NI no Solaris 11

Não tenho certeza se este é o lugar certo para perguntar isso; caso contrário, sinta-se à vontade para migrá-lo para onde for adequado.

Estou testando o recurso de criptografia no ZFS v31 em uma VM Solaris 11.11.11 no ESXi 5.0 em meu laboratório. Estou obtendo resultados terríveis ao testar minha pasta criptografada ddem um RAIDZ3 de 11 discos.

dd referência:

# 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

O que se traduz em:

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

Ao usar 100% da CPU.

Por outro lado, sem criptografia, estou obtendo gravações a quase 700 MB/s e leituras a cerca de 900 MB/s.

Como isainfo -vmostra, o aes é passado para a VM.

# 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

Sim, eu sei o que você está pensando. Eu deveria tentar bare metal - e realmente tentei. Estou obtendo os mesmos resultados executando bare metal. A razão pela qual estou mencionando que está em uma VM é porque o AES-NI realmente funciona e está me dando velocidade quase total usando TrueCrypt em minha VM Windows 7 de 64 bits no ESXi 5.0 usando exatamente as mesmas especificações para a máquina virtual.

Especificações da VM:

  • CPU: 2 núcleos (de Intel Xeon E3-1235 @ 3,2 GHz)
  • Memória: 8GB
  • Controlador SAS (via passagem Vt-d e PCI): 2x IBM M1015 (atualizado com firmware de TI)
  • HDD: 11x 2 TB Samsung F4EG (via IBM M1015)

Por onde devo começar a solução de problemas? Alguém usou com sucesso a criptografia acelerada AES-NI no Solaris 11 - em caso afirmativo, como está sua configuração e você precisou fazer algo especial?

Responder1

AES-NI será usado por padrão e não há necessidade de configuração. O ZFS usa as interfaces do Solaris Kernel Cryptographic Framework. Portanto, um trecho muito simples do DTrace informará se as funções que usam as instruções do Intel aesenc foram chamadas:

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

fbt::aes_encrypt_intel:return
{
}

Observe que quando habilitamos a criptografia para ZFS, também mudamos a soma de verificação para sha256-mac automaticamente. Portanto, uma comparação mais justa seria com um conjunto de dados ZFS que possui checksum=sha256 em vez de checksum=on (que é fletcher4).

Responder2

Acho que Darren respondeu à sua pergunta, mas seus resultados também podem estar sendo distorcidos pelo ZFS e pelo cache do sistema operacional. Embora using ddainda possa ser útil, seria mais útil usar algo como filebench( pkg benchmark/filebench no Solaris 11).

informação relacionada