Respostas:
Há muitos conselhos, mas poucos resultados empíricos para a eficiência do uso de criptografia.
Eu encontrei um desses estudos: benchmarking SSD Linux: comparando sistemas de arquivos e métodos de criptografia . Na tabela abaixo, as medidas são reais / usuário / sistema e os melhores resultados são coloridos em verde, enquanto os piores são em vermelho:
Com base nesses resultados, o autor decidiu usar o dm-crypt no modo aes-xts-plain com comprimento de chave de 128 bits e btrfs com alinhamento ssd e
compress=lzo
.
Outro artigo útil é O impacto no desempenho da criptografia de disco do Linux no Ubuntu 14.04 LTS . Ele estudou o uso da CPU durante a instalação nas três configurações das opções de instalação de estoque (sem criptografia de disco), método completo de criptografia de disco usando LUKS no LVM e criptografia de diretório inicial baseada em eCryptfs. Os resultados estão resumidos no gráfico abaixo, e a conclusão é que a instalação sem criptografia teve uma média de 26%, enquanto a criptografia LUKS no LVM e eCryptfs obteve uma média de 30 a 31%, portanto, ambas são quase equivalentes em desempenho.
Um artigo que não apresenta resultados empíricos, mas oferece bons conselhos sobre LinuX, SSDs e criptografia de disco . Eu recomendo a leitura deste artigo, e aqui está o principal conselho dado:
noatime
e nodiratime
suprimir a contabilidade dos tempos de acesso para arquivos e diretórios.Fiz alguns testes com um sistema de ponta baixa a média. Resultados abaixo.
Em conclusão, parece que a criptografia não inutiliza as otimizações de um sistema de arquivos. Como você pode ver na tabela, para dmcrypt / LUKS (AES256), o F2FS
sistema de arquivos era mais rápido do que EXT4
em quase todos os cenários em que era mais rápido por padrão (sem criptografia). Surpreendentemente, ele também proporcionou um benefício notável nos casos em que não existe criptografia - ou seja, Bonnie++ Sequential Output (Per char)
os Flexible I/O Tester Sequential Read
testes.
Para esse mesmo cenário, também foi mais lento em dois testes (Gravação Sequencial - Bonnie ++ e FIO), mas não muito mais lento. Sua milhagem pode variar.
Não testei EXT4 com AES-128bits por causa do tempo limitado, pois não seria essencial para esta resposta.
Nota: observei desvios muito grandes e estranhos nos testes com AES-128bits. Variações de até 15% na maioria dos testes e até 37% (!) Em um caso. Não sei por que. Eu não usei o sistema para mais nada durante os testes. O sistema (raiz) é criptografado com o AES-256, para que eu possa pensar em uma explicação hipotética envolvendo pipelines da CPU / opcache, mas ... Realmente não posso dizer ainda. (Isso também acontece ao testar a partir de um CD ao vivo, sem nunca desbloquear a partição AES-256 bits, por isso não é esse o motivo).
O desvio foi mantido abaixo de 3,6% (1,4% típico) em qualquer outro lugar. Estou adotando uma margem de erro de 4%. Portanto, diferenças menores que 4% devem ser ignoradas para esses resultados.
Configuração de teste:
SSD: Kingston SV300S37A/120G
Mainboard: ASUS Sabertooth 990FX R2.0
CPU: AMD FX-6350 @ stock
Kernel version: 4.11.3
IO Scheduler: CFQ
All tests were run using an 80GB secondary partition.
Tabela de resultados no formato ASCII (diferenças consideradas "irrelevantes" são omitidas):
|+===================================+|
|| % Change ||
|+=====================+=====================+=================+| ||--------+--------+--------+--------||
|| (no encryption) | AES-256 | AES-128 || || F2FS / EXT4 |Crypto / NoCrypto||
|+============+========================+----------+----------+----------+----------+------+----------||=========||--------+--------+--------+--------+|
|| Test suite | Test Method | EXT4 | F2FS | EXT4 | F2FS | EXT4 | F2FS || Unit ||nocrypto| aes256 | aes128 | aes256 ||
|+------------+------------------------+----------+----------+----------+----------+------+----------++---------++--------+--------+--------+--------+|
|| Manual | Read | 390.6 | 391.59 | 320 | 325.6 | - | 345.36 || MiB/s || | | -11.81 | -16.85 ||
||(cp and dd) | Write (zeros) | 501.96 | 517.17 | 96.9 | 96.7 | | 112.16 || MiB/s || | | -78.31 | -81.30 ||
|| | Write (random data) | 100.44 | 97.99 | 91.8 | 89.5 | | 97.64 || MiB/s || | | | -08.66 ||
||--------------------------------------------------------------------------------------------------------------||--------|--------|--------|--------||
|| | Seq. Output – Per char | 80.68 | 83.76 | 63.56 | 80.59 | - | 75.56 || MiB/s || | +26.79 | -09.79 | ||
|| | Seq. Output – Block | 498.92 | 492.42 | 104.74 | 101.13 | | 90.9 || MiB/s || | | -81.54 | -79.46 ||
|| Bonnie++ | Seq. Output – Rewrite | 196.4 | 198.99 | 74.69 | 70.8 | | 70.27 || MiB/s || | -05.21 | -64.69 | -64.42 ||
|| | Seq. Input - Per char | 86.93 | 86.04 | 84.01 | 81.25 | | 87.84 || MiB/s || | | | -05.57 ||
|| | Seq. Input – Block | 352.57 | 355.99 | 286.36 | 289.24 | | 304.5 || MiB/s || | | -14.46 | -18.75 ||
|| | Random seeks | 9452.9 | 9102.2 | 8142.3 | 8224.8 | | 7431.4 || ops/s || | | -18.36 | -09.64 ||
||--------------------------------------------------------------------------------------------------------------||--------|--------|--------|--------||
|| Fs-mark | 1000 files, 1 thread | 193.7 | 236.6 | 93.6 | 103.7 | - | 73.9 || files/s || +18.13 | +10.79 | -68.77 | -56.17 ||
|| | 5000 files, 4 threads | 310.1 | 348.8 | 90.9 | 99 | | 91.6 || files/s || +11.10 | +08.91 | -73.74 | -71.62 ||
||--------------------------------------------------------------------------------------------------------------||--------|--------|--------|--------||
|| | Random read | 56.77 | 69.86 | 58.79 | 63.51 | | 61.93 || MiB/s || | | | ||
|| | | 14188 | 17461 | 14695 | 15874 | | 15479 || IOPS || +23.07 | +08.02 | -11.35 | -09.09 ||
|| Flexible | | | | | | - | || || | | | ||
|| I/O | Random write | 59.91 | 78.99 | 52.2 | 63.75 | | 67.75 || MiB/s || | | | ||
|| Tester | | 14973 | 19745 | 13046 | 15935 | | 16934 || IOPS || +31.87 | +22.14 | -14.24 | -19.30 ||
|| | | | | | | | || || | | | ||
|| | Sequential read | 284.02 | 247.57 | 95.14 | 95.17 | | 95.98 || MiB/s || | | | ||
|| | | 71001 | 61889 | 23781 | 23788 | | 23991 || IOPS || -12.83 | | -61.24 | -61.56 ||
|| | | | | | | | || || | | | ||
|| | Sequential write | 94.06 | 100.77 | 100.63 | 96.56 | | 86.93 || MiB/s || | | | ||
|| | | 23512 | 25188 | 25153 | 24137 | | 21728 || IOPS || +07.13 | -04.04 | -13.74 | -04.17 ||
|+------------+------------------------+----------+----------+----------+----------+------+----------++---------++--------+--------+--------+--------+|
_