Cloudflare wis nyiapake patch sing nyepetake enkripsi disk kanthi dramatis ing Linux

Pangembang saka Cloudflare marang babagan nindakake karya kanggo ngoptimalake kinerja enkripsi disk ing kernel Linux. AkibatΓ©, padha disiapake tambalan kanggo subsistem dm-crypt lan Crypto API, kang ndadekake iku bisa kanggo luwih saka pindho maca lan nulis throughput ing test sintetik, uga latensi setengah. Nalika dites ing hardware nyata, overhead enkripsi suda kanggo meh tingkat diamati nalika nggarap disk tanpa enkripsi data.

Cloudflare nggunakake dm-crypt kanggo ndhelik data ing piranti panyimpenan sing digunakake kanggo cache isi ing CDN. Dm-crypt makaryakke ing tingkat piranti pamblokiran lan encrypts nulis I / O panjalukan lan decrypts maca panjalukan, tumindak minangka lapisan antarane piranti pemblokiran lan driver sistem file.

Cloudflare wis nyiapake patch sing nyepetake enkripsi disk kanthi dramatis ing Linux

Kanggo ngevaluasi kinerja dm-crypt nggunakake paket Tester I/O fleksibel Kita ngukur kacepetan nggarap partisi sing dienkripsi lan ora dienkripsi ing disk RAM sing ana ing RAM kanggo ngilangi fluktuasi kinerja disk lan fokus ing kinerja kode. Kanggo partisi sing ora dienkripsi, kinerja maca lan nulis tetep ing 1126 MB/s, nanging kacepetan mudhun nalika enkripsi diaktifake. Kaping 7 lan gunggungipun 147 MB ​​/ s.

Ing wiwitan, kecurigaan muncul babagan panggunaan algoritma sing ora efisien ing sistem kripto kernel. Nanging tes nggunakake algoritma paling cepet, aes-xts, karo 256 tombol enkripsi, kang kinerja nalika mlaku "cryptsetup pathokan" luwih saka kaping pindho minangka asil sing dijupuk nalika testing RAM disk. Eksperimen karo panji dm-crypt kanggo tuning kinerja ora ngasilake asil: nalika nggunakake gendera "--perf-same_cpu_crypt", kinerja malah mudhun dadi 136 MB / s, lan nalika nemtokake gendera "--perf-submit_from_crypt_cpus" mundhak. mung kanggo 166 MB / s.

Analisis sing luwih jero babagan logika operasi nuduhake yen dm-crypt ora kaya prasaja - nalika panjaluk nulis teka saka driver FS, dm-crypt ora langsung diproses, nanging dilebokake ing antrian "kcryptd", sing ora parsed langsung, nanging nalika trep wayahe. Saka antrian, panjalukan dikirim menyang Linux Crypto API kanggo nindakake enkripsi. Nanging amarga API Crypto nggunakake model eksekusi bedo, enkripsi uga ora langsung ditindakake, nanging ngliwati antrian liyane. Sawise enkripsi rampung, dm-crypt bisa nyoba ngurutake panjaluk nulis sing ditundha nggunakake wit telusuran abang-ireng. Ing pungkasan, thread kernel kapisah maneh, karo wektu tundha tartamtu, njupuk akumulasi panjalukan / O lan dikirim menyang tumpukan piranti pamblokiran.

Cloudflare wis nyiapake patch sing nyepetake enkripsi disk kanthi dramatis ing Linux

Nalika maca, dm-crypt pisanan nambah panjalukan menyang antrian "kcryptd_io" kanggo nampa data saka drive. Sawise sawetara wektu, data kasedhiya lan diselehake ing antrian "kcryptd" kanggo dekripsi.
Kcryptd ngirim panjalukan menyang Linux Crypto API, sing decrypts informasi bedo. Panyuwunan ora tansah ngliwati kabeh antrian, nanging ing skenario paling awon, panjalukan nulis rampung ing antrian nganti kaping 4, lan panjalukan diwaca nganti kaping 3. Saben tekan antrian nyebabake wektu tundha, sing dadi alasan utama kanggo nyuda kinerja dm-crypt.

Panggunaan antrian amarga kudu kerja ing kahanan sing ana gangguan. Ing taun 2005, nalika model operasi basis antrian dm-crypt saiki dileksanakake, API Crypto durung asynchronous. Sawise API Crypto ditransfer menyang model eksekusi bedo, proteksi kaping pindho wiwit digunakake. Antrian uga dikenalake kanggo ngirit konsumsi tumpukan kernel, nanging sawise nambah ing 2014, optimasi kasebut ilang relevansi. Antrian tambahan "kcryptd_io" dienalake kanggo ngatasi bottleneck sing nyebabake alokasi memori nalika akeh panjaluk teka. Ing 2015, fase ngurutake tambahan dienalake, amarga panjaluk enkripsi ing sistem multiprosesor bisa rampung tanpa urutan (tinimbang akses urutan menyang disk, akses ditindakake kanthi acak, lan panjadwal CFQ ora bisa digunakake kanthi efisien). Saiki, nalika nggunakake drive SSD, ngurutake wis ilang makna, lan panjadwal CFQ ora digunakake maneh ing kernel.

Ngelingi drive modern dadi luwih cepet lan luwih pinter, sistem distribusi sumber daya ing kernel Linux wis direvisi lan sawetara subsistem wis didesain ulang, insinyur Cloudflare ditambahake dm-crypt duwe mode operasi anyar sing ngilangi panggunaan antrian sing ora perlu lan telpon sing ora sinkron. Mode diaktifake dening flag kapisah "force_inline" lan ndadekke dm-crypt menyang wangun proxy prasaja sing encrypts lan decrypts panjalukan mlebu. Interaksi karo API Crypto wis dioptimalake kanthi milih algoritma enkripsi kanthi jelas sing beroperasi ing mode sinkron lan ora nggunakake antrian panyuwunan. Kanggo bisa synchronously karo Crypto API ana ngajokaken modul sing ngijini sampeyan nggunakake FPU / AES-NI kanggo akselerasi lan langsung nerusake panjalukan enkripsi lan dekripsi.

AkibatΓ©, nalika nyoba disk RAM, bisa luwih saka kaping pindho kinerja dm-crypt - kinerja tambah saka 294 MB / s (2 x 147 MB ​​/ s) kanggo 640 MB / s, kang banget cedhak. kinerja enkripsi gundhul (696 MB / s).

Cloudflare wis nyiapake patch sing nyepetake enkripsi disk kanthi dramatis ing Linux

Cloudflare wis nyiapake patch sing nyepetake enkripsi disk kanthi dramatis ing Linux

Cloudflare wis nyiapake patch sing nyepetake enkripsi disk kanthi dramatis ing Linux

Nalika nguji beban ing server nyata, implementasine anyar nuduhake kinerja sing cedhak banget karo konfigurasi sing mlaku tanpa enkripsi, lan ngaktifake enkripsi ing server kanthi cache Cloudflare ora ana pengaruh ing kacepetan respon. Ing mangsa ngarep, Cloudflare ngrancang kanggo nransfer patch sing disiapake menyang kernel Linux utama, nanging sadurunge kudu digarap maneh, amarga dioptimalake kanggo beban tartamtu lan ora nutupi kabeh area aplikasi, contone, enkripsi ing ngisor. - piranti ditempelake daya.

Cloudflare wis nyiapake patch sing nyepetake enkripsi disk kanthi dramatis ing Linux

Source: opennet.ru

Add a comment