Sviluppatori da Cloudflare
Cloudflare usa dm-crypt per criptà e dati nantu à i dispositi di almacenamiento utilizati per cache u cuntenutu in u CDN. Dm-crypt opera à u livellu di u dispositivu di bloccu è cripta e richieste di scrittura I / O è decripta e richieste di lettura, agiscenu cum'è una capa trà u dispositivu di bloccu è u driver di u sistema di fugliale.
Per evaluà u rendiment di dm-crypt utilizendu u pacchettu
À u primu, suspettu suscitatu annantu à l'usu di algoritmi inefficienti in u criptu di u kernel. Ma i testi anu utilizatu l'algoritmu più veloce, aes-xts, cù 256 chjavi di criptografia, chì a prestazione quandu eseguisce u "cryptsetup benchmark" hè più di duie volte più altu di u risultatu ottenutu quandu pruvate un discu RAM. L'esperimenti cù i bandieri dm-crypt per a sintonizazione di u rendiment ùn anu micca datu risultati: quandu si usa a bandiera "--perf-same_cpu_crypt", a prestazione hè ancu diminuita à 136 MB / s, è quandu si specifica a bandiera "--perf-submit_from_crypt_cpus" aumentava solu. à 166 MB/s.
Un analisi più profundo di a logica di u funziunamentu hà dimustratu chì dm-crypt ùn hè micca cusì simplice quant'è pare - quandu una dumanda di scrittura arriva da u driver FS, dm-crypt ùn u processa micca immediatamente, ma u mette in a fila "kcryptd", chì ùn hè micca analizatu immediatamente, ma quandu u mumentu cunvene. Da a fila, a dumanda hè mandata à l'API Linux Crypto per realizà a criptografia. Ma postu chì l'API Crypto usa un mudellu di esecuzione asincrona, a criptografia ùn hè micca realizata immediatamente, ma sguassendu una altra fila. Dopu chì a criptografia hè cumpleta, dm-crypt pò pruvà à sorte e richieste di scrittura pendenti utilizendu un arbre di ricerca
Quandu leghje, dm-crypt aghjusta prima una dumanda à a fila "kcryptd_io" per riceve dati da u drive. Dopu qualchì tempu, i dati sò dispunibuli è sò posti in a fila "kcryptd" per a decifrazione.
Kcryptd manda una dumanda à l'API Linux Crypto, chì decripta l'infurmazioni in modu asincronu. E dumande ùn passanu micca sempre per tutte e file, ma in u peghju scenariu, una dumanda di scrittura finisce in fila finu à 4 volte, è una dumanda di lettura finu à 3 volte. Ogni colpu à a fila causa ritardi, chì sò u mutivu chjave per a diminuzione significativa di u rendiment dm-crypt.
L'usu di fila hè duvuta à a necessità di travaglià in e cundizioni induve l'interruzzioni sò. In u 2005, quandu l'attuale mudellu operativu basatu in fila di dm-crypt hè statu implementatu, l'API Crypto ùn era ancu asincrona. Dopu chì l'API Crypto hè stata trasferita à un mudellu di esecuzione asincrona, essenzialmente doppia prutezzione hà cuminciatu à esse aduprata. Queues hè statu ancu introduttu per salvà u cunsumu di a pila di kernel, ma dopu à u so aumentu in 2014, sti ottimisazioni persu a so rilevanza. Una fila addiziale "kcryptd_io" hè stata introdutta per superà u collu di bottiglia chì risulta in attesa di l'allocazione di memoria quandu un gran numaru di richieste arrivanu. In u 2015, una fase di classificazione supplementaria hè stata introdutta, postu chì e richieste di criptografia in sistemi multiprocessori puderanu esse cumplette fora di l'ordine (invece di l'accessu sequenziale à u discu, l'accessu hè statu realizatu in ordine aleatoriu, è u pianificatore CFQ ùn hà micca travagliatu in modu efficiente). Attualmente, quandu si usanu unità SSD, a classificazione hà persu u so significatu, è u scheduler CFQ ùn hè più utilizatu in u kernel.
In cunsiderà chì i drive muderni sò diventati più veloci è più intelligenti, u sistema di distribuzione di risorse in u kernel Linux hè statu rivisatu è alcuni sottosistemi sò stati riprogettati, l'ingegneri di Cloudflare.
In u risultatu, durante a prova di un discu RAM, era pussibule più di duppià u rendiment di dm-crypt - u rendiment aumentatu da 294 MB / s (2 x 147 MB / s) à 640 MB / s, chì hè assai vicinu à a prestazione di crittografia nuda (696 MB / s).
Quandu a prova di carica nantu à i servitori veri, a nova implementazione hà dimustratu un rendimentu assai vicinu à a cunfigurazione chì funziona senza criptografia, è l'attivazione di a criptografia nantu à i servitori cù a cache Cloudflare ùn hà micca effettu in a velocità di risposta. In u futuru, Cloudflare pensa à trasfirià i patchs preparati à u kernel Linux principale, ma prima di questu, anu da esse ritruvati, postu chì sò ottimizzati per una carica specifica è ùn copre micca tutti i spazii di l'applicazione, per esempiu, a criptografia in bassa. -i dispusitivi incrustati putenza.
Source: opennet.ru