Risposte:
Ci sono molti consigli, ma pochissimi risultati empirici per l'efficienza dell'uso della crittografia.
Ho trovato uno di questi studi: benchmarking SSD Linux: confronto tra filesystem e metodi di crittografia . Nella tabella seguente, le misure sono reali / utente / sistema e i risultati migliori sono di colore verde mentre i peggiori sono di colore rosso:
clicca per ingrandire l'immagine
Sulla base di questi risultati, l'autore ha deciso di utilizzare dm-crypt in modalità aes-xts-plain con lunghezza chiave a 128 bit e btrfs con allineamento ssd e
compress=lzo
.
Un altro articolo utile è l'impatto sulle prestazioni della crittografia del disco Linux su Ubuntu 14.04 LTS . Ha studiato l'utilizzo della CPU durante l'installazione sulle tre configurazioni delle opzioni di installazione stock (nessuna crittografia del disco), il metodo di crittografia completa del disco utilizzando LUKS su LVM e la crittografia della directory principale basata su eCryptfs. I risultati sono riassunti nel grafico seguente e la conclusione è che l'installazione senza crittografia ha registrato una media del 26%, mentre i LUKS su LVM e la crittografia eCryptfs hanno entrambi una media di circa il 30 ~ 31%, quindi sono quasi equivalenti in termini di prestazioni.
clicca per ingrandire l'immagine
Un articolo che non ha risultati empirici ma molti buoni consigli sono LinuX, SSD e crittografia del disco . Consiglio di leggere questo articolo, ed ecco il consiglio principale dato:
noatime
e nodiratime
sopprimere la contabilità dei tempi di accesso per file e directory.Ho fatto alcuni test con un sistema di fascia medio-bassa. Risultati sotto.
In conclusione, sembra che la crittografia non renda inutili le ottimizzazioni di un filesystem. Come puoi vedere nella tabella, per dmcrypt / LUKS (AES256), il F2FS
filesystem era più veloce che EXT4
in quasi tutti gli scenari in cui era più veloce di default (senza crittografia, cioè). Un po 'sorprendentemente, ha anche fornito un notevole vantaggio nei casi in cui non sarebbe stato privo di crittografia, vale a dire Bonnie++ Sequential Output (Per char)
i Flexible I/O Tester Sequential Read
test e.
Per questo stesso scenario è stato anche più lento in due test (Scrittura sequenziale - Bonnie ++ e FIO), ma comunque non molto più lento. Il tuo chilometraggio può variare.
Non ho testato EXT4 con AES-128bits a causa del tempo limitato poiché non sarebbe essenziale per questa risposta.
Nota: ho osservato deviazioni molto grandi e strane nei test con AES-128 bit. Fino al 15% di variazioni nella maggior parte dei test e persino il 37% (!) In un caso. Non so perché. Non ho usato il sistema per nient'altro per la durata dei test. Il sistema (root) è esso stesso crittografato con AES-256, quindi posso pensare a una spiegazione ipotetica che coinvolge pipeline / opcache della CPU, ma ... Davvero non posso ancora dire. (Ciò accade anche quando si esegue il test da un CD live, senza mai sbloccare la partizione AES-256bit, quindi non è questo il motivo).
La deviazione è stata mantenuta inferiore al 3,6% (1,4% tipico) ovunque. Sto adottando un margine di errore del 4%. Pertanto, differenze inferiori al 4% dovrebbero essere ignorate per questi risultati.
Configurazione di prova:
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.
Tabella dei risultati in formato ASCII (le differenze ritenute "irrilevanti" sono omesse):
|+===================================+|
|| % 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 ||
|+------------+------------------------+----------+----------+----------+----------+------+----------++---------++--------+--------+--------+--------+|
_