Cloudflare-k Linux-en disko enkriptatzea izugarri bizkortzen duten adabakiak prestatu ditu

Cloudflare-ko garatzaileak kontatu Linux nukleoan disko enkriptatzeko errendimendua optimizatzeko lanak egiteari buruz. Ondorioz, prestatu ziren adabakiak azpisistemarako dm-kripta eta Crypto APIa, proba sintetikoan irakurtzeko eta idazteko errendimendua bikoiztu eta latentzia erdira murriztea ahalbidetu zuena. Hardware errealean probatu zenean, enkriptatzea datuen enkriptatutako disko batekin lan egitean ikusten den ia mailara murriztu zen.

Cloudflare-k dm-crypt erabiltzen du CDN-ko edukia cacheatzeko erabiltzen diren biltegiratze-gailuetako datuak enkriptatzeko. Dm-crypt-ek bloke-gailuen mailan funtzionatzen du eta idazketa-I/O-eskaerak enkriptatzen ditu eta irakurketa-eskaerak deszifratzen ditu, bloke-gailuaren eta fitxategi-sistemaren kontrolatzailearen arteko geruza gisa jokatuz.

Cloudflare-k Linux-en disko enkriptatzea izugarri bizkortzen duten adabakiak prestatu ditu

Paketea erabiliz dm-crypt-en errendimendua ebaluatzeko I/O probatzaile malgua Enkriptatutako eta zifratu gabeko partizioekin lan egiteko abiadura neurtu dugu RAM-an kokatuta dagoen RAM disko batean, diskoaren errendimenduaren gorabeherak ezabatzeko eta kodearen errendimenduan zentratzeko. Zifratu gabeko partizioetarako, irakurtzeko eta idazteko errendimenduak 1126 MB/s-an mantendu ziren, baina abiadura jaitsi egin zen enkriptatzea gaitu zenean. Denboran 7 eta 147 MB/s-koa izan zen.

Hasieran, susmoa sortu zen nukleoko kriptosisteman algoritmo eraginkorrak ez erabiltzearen inguruan. Baina probek algoritmo azkarrena erabili zuten, aes-xts, 256 enkriptazio-gakorekin, zeinaren errendimendua "cryptsetup benchmark" exekutatzen denean RAM disko bat probatzean lortutako emaitza baino bi aldiz handiagoa da. Errendimendua doitzeko dm-crypt markekin egindako esperimentuek ez zuten emaitzarik eman: "--perf-same_cpu_crypt" marka erabiltzean, errendimendua 136 MB/s-ra ere jaitsi zen, eta "--perf-submit_from_crypt_cpus" marka zehaztean bakarrik handitu zen. 166 MB/s-ra.

Logika operatiboaren azterketa sakonago batek erakutsi zuen dm-crypt ez dela dirudien bezain erraza - FS kontrolatzailetik idazketa eskaera bat iristen denean, dm-crypt ez du berehala prozesatzen, baizik eta "kcryptd" ilaran jartzen du. ez da berehala analizatzen, une egokia denean baizik. Ilaratik, eskaera Linux Crypto APIra bidaltzen da enkriptatzea egiteko. Baina Crypto APIak exekuzio eredu asinkronoa erabiltzen duenez, enkriptatzea ere ez da berehala egiten, beste ilara bat saihestuz baizik. Enkriptatzea amaitu ondoren, dm-crypt-ek zain dauden idazketa-eskaerak bilaketa-zuhaitz baten bidez ordenatzen saia daiteke gorri-beltza. Amaieran, kernel-hari bereizi batek berriro, atzerapen jakin batekin, pilatutako I/O eskaerak jasotzen ditu eta bloke-gailuen pilara bidaltzen ditu.

Cloudflare-k Linux-en disko enkriptatzea izugarri bizkortzen duten adabakiak prestatu ditu

Irakurtzean, dm-crypt-ek lehenik eskaera bat gehitzen du "kcryptd_io" ilarara unitateko datuak jasotzeko. Denbora pixka bat igaro ondoren, datuak eskuragarri egongo dira eta "kcryptd" ilaran jartzen dira deszifratzeko.
Kcryptd-ek eskaera bat bidaltzen du Linux Crypto APIra, eta horrek informazioa modu asinkronoan deszifratzen du. Eskaerak ez dira beti ilara guztietatik pasatzen, baina kasurik txarrenean, idazketa-eskaera bat ilaran amaitzen da 4 aldiz gehienez, eta irakurketa-eskaera 3 aldiz gehienez. Ilaran egindako hit bakoitzak atzerapenak eragiten ditu, eta horiek dira dm-crypt errendimenduaren murrizketa nabarmenaren arrazoi nagusia.

Ilarak erabiltzea etenaldiak gertatzen diren baldintzetan lan egin beharragatik da. 2005ean, dm-crypt-en egungo ilaran oinarritutako eredu eragilea ezarri zenean, Crypto APIa ez zen oraindik asinkronoa. Crypto API exekuzio eredu asinkrono batera transferitu ondoren, funtsean babes bikoitza erabiltzen hasi zen. Ilarak ere sartu ziren nukleoen pila-kontsumoa aurrezteko, baina 2014an handitu ondoren, optimizazio hauek garrantzia galdu zuten. "kcryptd_io" ilara gehigarri bat sartu zen, eskaera ugari iristen direnean memoria esleitzearen zain egotearen ondorioz botila-lepoa gainditzeko. 2015ean, sailkapen-fase gehigarri bat sartu zen, prozesadore anitzeko sistemen enkriptazio-eskaerak ordenarik gabe bete zitezkeelako (diskorako sarbide sekuentziala egin beharrean, sarbidea ausazko ordenan egiten zen, eta CFQ programatzaileak ez zuen eraginkortasunez funtzionatzen). Gaur egun, SSD unitateak erabiltzean, ordenatzeak zentzua galdu du eta CFQ programatzailea ez da gehiago erabiltzen nukleoan.

Unitate modernoak azkarrago eta adimentsuagoak bihurtu direla kontuan hartuta, Linux nukleoko baliabideak banatzeko sistema berrikusi eta azpisistema batzuk birdiseinatu dira, Cloudflare ingeniariek gehitu du dm-crypt-ek alferrikako ilarak eta dei asinkronoak erabiltzea ezabatzen duen funtzionamendu modu berri bat du. Modua "force_inline" bereizi baten bidez gaitzen da eta dm-crypt-ek sarrerako eskaerak zifratzen eta deszifratzen dituen proxy soil baten formara eramaten du. Crypto APIarekin interakzioa optimizatu da modu sinkronoan funtzionatzen duten eta eskaera-ilarak erabiltzen ez dituzten enkriptazio-algoritmoak esplizituki aukeratuz. Crypto APIarekin sinkronoki lan egiteko zegoen proposatu azeleraziorako FPU/AES-NI erabiltzeko eta enkriptatzeko eta deszifratzeko eskaerak zuzenean birbidaltzeko aukera ematen duen modulua.

Ondorioz, RAM disko bat probatzean, dm-crypt-en errendimendua bikoiztu baino gehiago izan zen - errendimendua 294 MB/s (2 x 147 MB/s) izatetik 640 MB/s-ra igo zen, hau da, oso hurbil. zifratze hutsaren errendimendua (696 MB/s).

Cloudflare-k Linux-en disko enkriptatzea izugarri bizkortzen duten adabakiak prestatu ditu

Cloudflare-k Linux-en disko enkriptatzea izugarri bizkortzen duten adabakiak prestatu ditu

Cloudflare-k Linux-en disko enkriptatzea izugarri bizkortzen duten adabakiak prestatu ditu

Zerbitzari errealetan karga probatzean, inplementazio berriak enkriptatutako konfiguraziotik oso gertu zegoen errendimendua erakutsi zuen, eta Cloudflare cachea duten zerbitzarietan enkriptatzea gaitzeak ez zuen erantzunen abiaduran eraginik izan. Etorkizunean, Cloudflare-k prestatutako adabakiak Linux kernel nagusira transferitzeko asmoa du, baina aurretik berriro landu beharko dira, karga zehatz baterako optimizatuta baitaude eta ez baitute aplikazio-eremu guztiak estaltzen, adibidez, enkriptatzea. -Potentzia txertatutako gailuak.

Cloudflare-k Linux-en disko enkriptatzea izugarri bizkortzen duten adabakiak prestatu ditu

Iturria: opennet.ru

Gehitu iruzkin berria