Estou trabalhando em software embarcado, onde usei o cryptsetup para criar um espaço em disco criptografado através de uma conexão padrão Ethernet NFS... Estou interessado em entender a velocidade de gravação que este disco atinge (simples análise de desempenho).
Primeiro eu executo um benchmark padrão
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
Apenas para efeito de teste, optei por ver eaes-cbc-256 que parece ter bons desempenhos.
Mas agora quero testar a velocidade real alcançada. meu NFS está montado em /mnt/ e a pasta criptografada está montada corretamente em /home/encryptroot/ . Eu usei:
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
Destes resultados obtive na pasta normal uma velocidade de quase 9 MB/s
Enquanto para a pasta criptografada obtive 4 MB/s
Pergunta 1) Este é um método válido para avaliar a velocidade de escrita? usando o parâmetro fsync isso deve avaliar o tempo usado para realmente copiar o arquivo no disco (não para copiar em caches)?
Não estou satisfeito com estes resultados, pois com um potencial de criptografia de 20 MB/s não consigo preencher a largura de banda total disponível (cerca de 9 MB/s).
Investigação final: mudei a cifra e usei o padrão aes-xts que deveria atingir no máximo 9MB/s repeti
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
Obtendo uma velocidade de gravação de 2,2 MB/s.
Questão 2) há outros fatores a serem considerados que me faltam para analisar esses resultados? É possível que a sobrecarga do xts seja tão alta a ponto de reduzir o rendimento? E tem outro teste para sugerir?
Obrigado