Cloudflare ir sagatavojis ielāpus, kas ievērojami paātrina diska Å”ifrÄ“Å”anu operētājsistēmā Linux

Izstrādātāji no Cloudflare stāstÄ«ja par darbu veikÅ”anu, lai optimizētu diska Å”ifrÄ“Å”anas veiktspēju Linux kodolā. Rezultātā viņi tika sagatavoti ielāpus apakÅ”sistēmai dm-kripta un Crypto API, kas ļāva vairāk nekā divas reizes palielināt lasÄ«Å”anas un rakstÄ«Å”anas caurlaidspēju sintētiskajā testā, kā arÄ« uz pusi samazināt latentumu. Pārbaudot ar reālu aparatÅ«ru, Å”ifrÄ“Å”anas izmaksas tika samazinātas lÄ«dz gandrÄ«z tādam lÄ«menim, kāds novērots, strādājot ar disku bez datu Å”ifrÄ“Å”anas.

Cloudflare izmanto dm-crypt, lai Å”ifrētu datus uzglabāŔanas ierÄ«cēs, ko izmanto satura keÅ”atmiņai CDN. Dm-crypt darbojas blokierÄ«ces lÄ«menÄ« un Å”ifrē rakstÄ«Å”anas I/O pieprasÄ«jumus un atÅ”ifrē lasÄ«Å”anas pieprasÄ«jumus, darbojoties kā slānis starp blokierÄ«ci un failu sistēmas draiveri.

Cloudflare ir sagatavojis ielāpus, kas ievērojami paātrina diska Å”ifrÄ“Å”anu operētājsistēmā Linux

Lai novērtētu dm-crypt veiktspēju, izmantojot pakotni ElastÄ«gs I/O testeris Mēs izmērÄ«jām ātrumu darbam ar Å”ifrētiem un neÅ”ifrētiem nodalÄ«jumiem RAM diskā, kas atrodas RAM, lai novērstu diska veiktspējas svārstÄ«bas un koncentrētos uz koda veiktspēju. NeÅ”ifrētiem nodalÄ«jumiem lasÄ«Å”anas un rakstÄ«Å”anas veiktspēja saglabājās 1126 MB/s, taču ātrums samazinājās, kad tika iespējota Å”ifrÄ“Å”ana 7 laikā un sasniedza 147 MB/s.

Sākumā radās aizdomas par neefektÄ«vu algoritmu izmantoÅ”anu kodola kriptosistēmā. Bet testos tika izmantots ātrākais algoritms aes-xts ar 256 Å”ifrÄ“Å”anas atslēgām, kura veiktspēja, palaižot ā€œcryptsetup etalonuā€, ir vairāk nekā divas reizes augstāka par rezultātu, kas iegÅ«ts, pārbaudot RAM disku. Eksperimenti ar dm-crypt karodziņiem veiktspējas regulÄ“Å”anai nedeva rezultātus: izmantojot karogu ā€œ--perf-same_cpu_cryptā€, veiktspēja pat samazinājās lÄ«dz 136 MB/s, bet, norādot karogu ā€œ--perf-submit_from_crypt_cpusā€, tā tikai palielinājās. lÄ«dz 166 MB/s.

Padziļināta darbÄ«bas loÄ£ikas analÄ«ze parādÄ«ja, ka dm-crypt nav tik vienkārÅ”a, kā Ŕķiet - kad no FS draivera pienāk rakstÄ«Å”anas pieprasÄ«jums, dm-crypt to neapstrādā uzreiz, bet ievieto ā€œkcryptdā€ rindā, kas netiek parsēts uzreiz, bet izdevÄ«gā brÄ«dÄ«. No rindas pieprasÄ«jums tiek nosÅ«tÄ«ts uz Linux Crypto API, lai veiktu Å”ifrÄ“Å”anu. Bet, tā kā Crypto API izmanto asinhrono izpildes modeli, Å”ifrÄ“Å”ana arÄ« netiek veikta uzreiz, bet apejot citu rindu. Kad Å”ifrÄ“Å”ana ir pabeigta, dm-crypt var mēģināt kārtot neapstiprinātos rakstÄ«Å”anas pieprasÄ«jumus, izmantojot meklÄ“Å”anas koku sarkanmelni. Beigās atseviŔķs kodola pavediens atkal ar noteiktu aizkavi uztver uzkrātos I/O pieprasÄ«jumus un nosÅ«ta tos uz blokierīču steku.

Cloudflare ir sagatavojis ielāpus, kas ievērojami paātrina diska Å”ifrÄ“Å”anu operētājsistēmā Linux

Lasot, dm-crypt vispirms pievieno pieprasÄ«jumu ā€œkcryptd_ioā€ rindai, lai saņemtu datus no diska. Pēc kāda laika dati kļūst pieejami un tiek ievietoti atÅ”ifrÄ“Å”anas rindā ā€œkcryptdā€.
Kcryptd nosÅ«ta pieprasÄ«jumu Linux Crypto API, kas asinhroni atÅ”ifrē informāciju. PieprasÄ«jumi ne vienmēr iziet cauri visām rindām, taču sliktākajā gadÄ«jumā rakstÄ«Å”anas pieprasÄ«jums nonāk rindās lÄ«dz 4 reizēm, bet lasÄ«Å”anas pieprasÄ«jums lÄ«dz 3 reizēm. Katrs trāpÄ«jums rindā izraisa aizkavi, kas ir galvenais iemesls ievērojamam dm-crypt veiktspējas samazinājumam.

Rindu izmantoÅ”ana ir saistÄ«ta ar nepiecieÅ”amÄ«bu strādāt apstākļos, kad rodas pārtraukumi. 2005. gadā, kad tika ieviests dm-crypt paÅ”reizējais uz rindām balstÄ«ts darbÄ«bas modelis, Crypto API vēl nebija asinhrona. Pēc tam, kad Crypto API tika pārsÅ«tÄ«ts uz asinhronās izpildes modeli, bÅ«tÄ«bā sāka izmantot dubulto aizsardzÄ«bu. Rindas tika ieviestas arÄ«, lai taupÄ«tu kodola steka patēriņu, taču pēc tā palielināŔanas 2014. gadā Ŕīs optimizācijas zaudēja savu aktualitāti. Tika ieviesta papildu rinda "kcryptd_io", lai pārvarētu saÅ”aurinājumu, kā rezultātā tika gaidÄ«ta atmiņas pieŔķirÅ”ana, kad tiek saņemts liels skaits pieprasÄ«jumu. 2015. gadā tika ieviesta papildu ŔķiroÅ”anas fāze, jo Å”ifrÄ“Å”anas pieprasÄ«jumus vairāku procesoru sistēmās varēja izpildÄ«t ārpus kārtas (secÄ«gas piekļuves diskam vietā piekļuve tika veikta nejauŔā secÄ«bā, un CFQ plānotājs nedarbojās efektÄ«vi). PaÅ”laik, izmantojot SSD diskus, ŔķiroÅ”ana ir zaudējusi nozÄ«mi, un kodolā vairs netiek izmantots CFQ plānotājs.

Ņemot vērā, ka mÅ«sdienu diskdziņi ir kļuvuÅ”i ātrāki un viedāki, Linux kodola resursu sadales sistēma ir pārskatÄ«ta un dažas apakÅ”sistēmas ir pārveidotas, Cloudflare inženieri piebilda dm-crypt ir jauns darbÄ«bas režīms, kas novērÅ” nevajadzÄ«gu rindu un asinhrono zvanu izmantoÅ”anu. Režīms ir iespējots ar atseviŔķu karogu ā€œforce_inlineā€, un tas nodroÅ”ina dm-crypt vienkārÅ”u starpniekservera formā, kas Å”ifrē un atÅ”ifrē ienākoÅ”os pieprasÄ«jumus. MijiedarbÄ«ba ar Crypto API ir optimizēta, skaidri izvēloties Å”ifrÄ“Å”anas algoritmus, kas darbojas sinhronā režīmā un neizmanto pieprasÄ«jumu rindas. Lai strādātu sinhroni ar Crypto API, bija ierosināts modulis, kas ļauj izmantot FPU/AES-NI paātrināŔanai un tieÅ”i pārsÅ«ta Å”ifrÄ“Å”anas un atÅ”ifrÄ“Å”anas pieprasÄ«jumus.

Rezultātā, testējot RAM disku, bija iespējams vairāk nekā divas reizes palielināt dm-crypt veiktspēju - veiktspēja pieauga no 294 MB/s (2 x 147 MB/s) lÄ«dz 640 MB/s, kas ir ļoti tuvu tukÅ”as Å”ifrÄ“Å”anas veiktspēja (696 MB / s).

Cloudflare ir sagatavojis ielāpus, kas ievērojami paātrina diska Å”ifrÄ“Å”anu operētājsistēmā Linux

Cloudflare ir sagatavojis ielāpus, kas ievērojami paātrina diska Å”ifrÄ“Å”anu operētājsistēmā Linux

Cloudflare ir sagatavojis ielāpus, kas ievērojami paātrina diska Å”ifrÄ“Å”anu operētājsistēmā Linux

Pārbaudot slodzi uz reāliem serveriem, jaunā ievieÅ”ana uzrādÄ«ja veiktspēju ļoti tuvu konfigurācijai, kas darbojas bez Å”ifrÄ“Å”anas, un Å”ifrÄ“Å”anas iespējoÅ”ana serveros ar Cloudflare keÅ”atmiņu neietekmēja reakcijas ātrumu. Nākotnē Cloudflare plāno sagatavotos ielāpus pārsÅ«tÄ«t uz galveno Linux kodolu, taču pirms tam tie bÅ«s jāpārstrādā, jo tie ir optimizēti konkrētai slodzei un neaptver visas pielietojuma jomas, piemēram, Å”ifrÄ“Å”ana zemā lÄ«menÄ«. - jaudas iegultās ierÄ«ces.

Cloudflare ir sagatavojis ielāpus, kas ievērojami paātrina diska Å”ifrÄ“Å”anu operētājsistēmā Linux

Avots: opennet.ru

Pievieno komentāru