Pamekar ti Cloudflare
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.
Pikeun evaluate kinerja dm-crypt ngagunakeun iket
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
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.
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).
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.
sumber: opennet.ru