Cloudflare hà preparatu patch chì acceleranu dramaticamente a criptografia di discu in Linux

Sviluppatori da Cloudflare hà dettu circa u travagliu per ottimisà u rendiment di a criptografia di discu in u kernel Linux. In u risultatu, sò stati preparati patchs per u sottosistema dm-crypt è Crypto API, chì hà permessu di più di duppià u throughput di lettura è scrittura in a prova sintetica, è ancu di metà latenza. Quandu a prova nantu à u hardware reale, l'overhead di criptografia hè stata ridutta à quasi u livellu osservatu quandu si travaglia cù un discu senza utilizà a criptografia di dati.

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.

Cloudflare hà preparatu patch chì acceleranu dramaticamente a criptografia di discu in Linux

Per evaluà u rendiment di dm-crypt utilizendu u pacchettu Tester I/O flexible Avemu misuratu a velocità di travaglià cù partizioni criptate è micca criptate in un discu RAM situatu in RAM per eliminà i fluttuazioni in u rendiment di u discu è fucalizza nantu à u rendiment di codice. Per partizioni micca criptate, a prestazione di lettura è scrittura restava à 1126 MB/s, ma a velocità diminuì quandu a criptografia era attivata. 7 volte è era 147 MB/s.

À 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 rossu-neru. À a fine, un filu di kernel separatu di novu, cù un certu ritardu, coglie e dumande I / O accumulate è li manda à a pila di u dispositivu di bloccu.

Cloudflare hà preparatu patch chì acceleranu dramaticamente a criptografia di discu in Linux

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. aghjuntu dm-crypt hà un novu modu operativu chì elimina l'usu di file innecessarii è chjamate asincrone. U modu hè attivatu da una bandiera separata "force_inline" è porta dm-crypt à a forma di un proxy simplice chì cripta è decripta e richieste entrate. L'interazzione cù l'API Crypto hè stata ottimizzata scegliendu esplicitamente algoritmi di criptografia chì operanu in modu sincronu è ùn utilizanu file di richieste. Per travaglià in sincronia cù l'API Crypto ci era prupostu un modulu chì vi permette di utilizà FPU / AES-NI per l'accelerazione è invià direttamente e richieste di criptografia è decifrazione.

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).

Cloudflare hà preparatu patch chì acceleranu dramaticamente a criptografia di discu in Linux

Cloudflare hà preparatu patch chì acceleranu dramaticamente a criptografia di discu in Linux

Cloudflare hà preparatu patch chì acceleranu dramaticamente a criptografia di discu in Linux

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.

Cloudflare hà preparatu patch chì acceleranu dramaticamente a criptografia di discu in Linux

Source: opennet.ru

Add a comment