Cloudflare parantos nyiapkeun patch anu nyepetkeun enkripsi disk dina Linux

Pamekar ti Cloudflare ngawartosan ngeunaan ngalaksanakeun pagawéan pikeun ngaoptimalkeun kinerja énkripsi disk dina kernel Linux. Hasilna, aranjeunna disiapkeun tambalan pikeun subsistem dm-crypt jeung Crypto API, nu ngamungkinkeun pikeun leuwih ti ganda maca jeung nulis throughput dina tés sintétik, kitu ogé latency satengah. Nalika diuji dina hardware nyata, overhead enkripsi diréduksi jadi ampir tingkat observasi nalika gawé bareng disk tanpa enkripsi data.

Cloudflare ngagunakeun dm-crypt pikeun énkripsi data dina alat panyimpen anu dianggo pikeun nga-cache eusi dina CDN. Dm-crypt ngoperasikeun dina tingkat alat block jeung encrypts nulis I / O requests na decrypts requests dibaca, akting salaku lapisan antara alat block jeung supir sistem file.

Cloudflare parantos nyiapkeun patch anu nyepetkeun enkripsi disk dina Linux

Pikeun evaluate kinerja dm-crypt ngagunakeun iket I / O tester fléksibel Kami ngukur laju gawé bareng partisi énkripsi sareng henteu énkripsi dina disk RAM anu aya di RAM pikeun ngaleungitkeun turun naek dina pagelaran disk sareng fokus kana kinerja kode. Pikeun partisi anu henteu énkripsi, kinerja maca sareng nyerat tetep dina 1126 MB/s, tapi lajuna turun nalika énkripsi diaktipkeun. di 7 kali sarta jumlahna 147 MB ​​/ s.

Mimitina, kacurigaan timbul ngeunaan pamakean algoritma anu teu efisien dina sistem kripto kernel. Tapi tés ngagunakeun algoritma panggancangna, aes-xts, kalawan 256 konci enkripsi, anu kinerja nalika ngajalankeun "cryptsetup patokan" leuwih ti dua kali saluhur hasilna diala nalika nguji RAM disk. Ékspérimén sareng bandéra dm-crypt pikeun tuning kinerja henteu ngahasilkeun hasil: nalika nganggo bandéra "--perf-same_cpu_crypt", pagelaran malah turun ka 136 MB / s, sareng nalika netepkeun bendera "--perf-submit_from_crypt_cpus" éta ningkat. ngan ka 166 MB / s.

Analisis anu langkung jero ngeunaan logika operasi nunjukkeun yén dm-crypt henteu sagampil sigana - nalika pamundut nyerat sumping ti supir FS, dm-crypt henteu langsung ngolah, tapi nempatkeun éta dina antrian "kcryptd", anu teu parsed geuwat, tapi lamun momen merenah. Tina antrian, pamundut dikirim ka Linux Crypto API pikeun ngalakukeun enkripsi. Tapi saprak API Crypto ngagunakeun modél palaksanaan Asynchronous, enkripsi ogé henteu dipigawé langsung, tapi bypassing antrian sejen. Saatos enkripsi réngsé, dm-crypt tiasa nyobian nyortir pamundut nyerat anu ditangguhkeun nganggo tangkal panéangan beureum-hideung. Dina tungtungna, thread kernel misah deui, kalawan reureuh tangtu, nyokot akumulasi / requests O tur ngirimkeunana ka tumpukan alat block.

Cloudflare parantos nyiapkeun patch anu nyepetkeun enkripsi disk dina Linux

Nalika maca, dm-crypt munggaran nambihan pamundut kana antrian "kcryptd_io" pikeun nampi data tina drive. Saatos sababaraha waktos, data janten sayogi sareng disimpen dina antrian "kcryptd" pikeun dekripsi.
Kcryptd ngirimkeun pamundut ka Linux Crypto API, anu ngadekrip inpormasi sacara asynchronously. Requests teu salawasna ngaliwatan sagala antrian, tapi dina skenario hal awon, pamundut nulis ends up dina antrian nepi ka 4 kali, sarta pamundut dibaca nepi ka 3 kali. Unggal pencét kana antrian ngabalukarkeun reureuh, nu mangrupakeun alesan konci pikeun panurunan signifikan dina kinerja dm-crypt.

Pamakéan antrian téh alatan kabutuhan pikeun digawé dina kaayaan dimana interruptions lumangsung. Taun 2005, nalika modél operasi dumasar antrian dm-crypt ayeuna dilaksanakeun, API Crypto henteu acan asynchronous. Saatos Crypto API dialihkeun kana model palaksanaan Asynchronous, dasarna panyalindungan ganda mimiti dipaké. Antrian ogé diwanohkeun pikeun ngahemat konsumsi tumpukan kernel, tapi saatos paningkatan taun 2014, optimasi ieu leungit relevansina. Antrian tambahan "kcryptd_io" diwanohkeun pikeun nungkulan bottleneck hasilna ngantosan alokasi memori nalika angka nu gede ngarupakeun requests anjog. Dina 2015, hiji fase asihan tambahan diwanohkeun, saprak requests enkripsi on sistem multiprocessor bisa réngsé kaluar tina urutan (tinimbang aksés sequential kana disk, aksés dilaksanakeun dina urutan acak, sarta CFQ scheduler teu dianggo éfisién). Ayeuna, nalika nganggo drive SSD, asihan parantos leungit harti na, sareng jadwal CFQ henteu dianggo dina kernel.

Nganggap yén drive modern parantos langkung gancang sareng langkung pinter, sistem distribusi sumberdaya dina kernel Linux parantos dirévisi sareng sababaraha subsistem parantos didesain ulang, insinyur Cloudflare. ditambahkeun dm-crypt boga mode operasi anyar nu eliminates pamakéan antrian perlu jeung panggero Asynchronous. modeu diaktipkeun ku bandéra misah "force_inline" na brings dm-crypt kana wangun proxy basajan nu encrypts na decrypts requests asup. Interaksi jeung API Crypto geus dioptimalkeun ku eksplisit milih algoritma enkripsi nu beroperasi dina modeu sinkron jeung teu make antrian pamundut. Pikeun digawé synchronously jeung API Crypto aya diajukeun modul nu ngidinan Anjeun pikeun make FPU / AES-NI pikeun akselerasi tur langsung diteruskeun requests enkripsi sarta dekripsi.

Hasilna, nalika nguji disk RAM, éta mungkin pikeun leuwih ti ganda kinerja dm-crypt - kinerja ngaronjat tina 294 MB / s (2 x 147 MB ​​/ s) kana 640 MB / s, nu deukeut pisan. kinerja enkripsi bulistir (696 MB / s).

Cloudflare parantos nyiapkeun patch anu nyepetkeun enkripsi disk dina Linux

Cloudflare parantos nyiapkeun patch anu nyepetkeun enkripsi disk dina Linux

Cloudflare parantos nyiapkeun patch anu nyepetkeun enkripsi disk dina Linux

Nalika nguji beban dina server nyata, palaksanaan anyar némbongkeun kinerja deukeut pisan konfigurasi ngajalankeun tanpa enkripsi, sarta sangkan enkripsi on server kalawan Cloudflare cache teu boga pangaruh dina speed respon. Ka hareupna, Cloudflare ngarencanakeun pikeun nransferkeun patches anu disiapkeun kana kernel Linux utama, tapi sateuacan éta aranjeunna kedah didamel deui, sabab dioptimalkeun pikeun beban khusus sareng henteu nutupan sadaya daérah aplikasi, contona, enkripsi dina low. -kakuatan embedded alat.

Cloudflare parantos nyiapkeun patch anu nyepetkeun enkripsi disk dina Linux

sumber: opennet.ru

Tambahkeun komentar