Cloudflare hefur útbúið plástra sem flýta verulega fyrir dulkóðun diska í Linux

Hönnuðir frá Cloudflare sagði um að vinna að því að hámarka afköst dulkóðunar diska í Linux kjarnanum. Fyrir vikið voru þeir undirbúnir plástrar fyrir undirkerfi dm-dulrit og Crypto API, sem gerði það mögulegt að meira en tvöfalda lestrar- og skrifafköst í gerviprófinu, auk helminga leynd. Þegar það var prófað á raunverulegum vélbúnaði var dulkóðunarkostnaður minnkaður í næstum því stig sem sést þegar unnið er með disk án dulkóðunar gagna.

Cloudflare notar dm-crypt til að dulkóða gögn á geymslutækjum sem notuð eru til að vista efni á CDN. Dm-crypt starfar á vettvangi blokkarbúnaðar og dulkóðar skrifa I/O beiðnir og afkóðar lestrarbeiðnir og virkar sem lag á milli blokkartækisins og skráarkerfisstjórans.

Cloudflare hefur útbúið plástra sem flýta verulega fyrir dulkóðun diska í Linux

Til að meta árangur dm-crypt með því að nota pakkann Sveigjanlegur I/O prófari Við mældum hraða vinnu með dulkóðuðum og ódulkóðuðum skiptingum á vinnsluminni diski sem staðsettur er í vinnsluminni til að koma í veg fyrir sveiflur í afköstum disksins og einblína á afköst kóðans. Fyrir ódulkóðuð skipting hélst lestrar- og skrifafköst í 1126 MB/s, en hraðinn minnkaði þegar dulkóðun var virkjuð 7 sinnum og nam 147 MB/s.

Í fyrstu vaknaði grunur um notkun óhagkvæmra reiknirita í dulritunarkerfi kjarnans. En prófin notuðu hraðasta reikniritið, aes-xts, með 256 dulkóðunarlyklum, en árangur þeirra þegar keyrt er „cryptsetup benchmark“ er meira en tvöfalt hærri en niðurstaðan sem fæst þegar vinnsluminni diskur er prófaður. Tilraunir með dm-crypt fána til að stilla frammistöðu gáfu ekki niðurstöður: þegar notaður var „--perf-same_cpu_crypt“ fáninn minnkaði árangur jafnvel í 136 MB/s og þegar „--perf-submit_from_crypt_cpus“ fáninn var tilgreindur jókst hann aðeins í 166 MB/s.

Dýpri greining á rekstrarrökfræðinni sýndi að dm-crypt er ekki eins einfalt og það virðist - þegar skrifbeiðni berst frá FS bílstjóranum vinnur dm-crypt hana ekki strax, heldur setur það í „kcryptd“ biðröðina, sem er ekki greint strax, en þegar hentugur augnablik. Úr biðröðinni er beiðnin send til Linux Crypto API til að framkvæma dulkóðun. En þar sem Crypto API notar ósamstillt framkvæmdarlíkan er dulkóðun heldur ekki framkvæmd strax, heldur framhjá annarri biðröð. Eftir að dulkóðun er lokið gæti dm-crypt reynt að flokka skrifbeiðnir í bið með því að nota leitartré rauð-svartur. Í lokin tekur sérstakur kjarnaþráður aftur, með ákveðinni töf, uppsafnaðar I/O beiðnir og sendir þær í blokkarbúnaðinn.

Cloudflare hefur útbúið plástra sem flýta verulega fyrir dulkóðun diska í Linux

Við lestur bætir dm-crypt fyrst beiðni í „kcryptd_io“ biðröðina til að fá gögn frá drifinu. Eftir nokkurn tíma verða gögnin aðgengileg og eru sett í „kcryptd“ biðröðina fyrir afkóðun.
Kcryptd sendir beiðni til Linux Crypto API, sem afkóðar upplýsingarnar ósamstilltur. Beiðnir fara ekki alltaf í gegnum allar biðraðir, en í versta falli endar skrifbeiðni allt að 4 sinnum í biðröðum og lesbeiðni allt að 3 sinnum. Hvert högg í biðröðina veldur töfum, sem eru lykilástæðan fyrir verulegri lækkun á dm-crypt frammistöðu.

Notkun biðraða er vegna þess að vinna þarf við aðstæður þar sem truflanir verða. Árið 2005, þegar núverandi rekstrarlíkan sem byggir á biðröð dm-crypt var innleitt, var Crypto API ekki enn ósamstilltur. Eftir að Crypto API var flutt yfir í ósamstillt framkvæmdarlíkan, byrjaði að nota tvöfalda vernd í meginatriðum. Biðraðir voru einnig kynntar til að spara neyslu á kjarnastaflanum, en eftir aukningu hans árið 2014 misstu þessar hagræðingar gildi sínu. Viðbótarröð „kcryptd_io“ var kynnt til að sigrast á flöskuhálsinum sem leiðir til þess að beðið er eftir minnisúthlutun þegar mikill fjöldi beiðna berst. Árið 2015 var tekinn upp viðbótarflokkunarfasi þar sem hægt var að klára dulkóðunarbeiðnir í fjölgjörvakerfum í ólagi (í stað þess að raðaðgangur að disknum fór fram í handahófskenndri röð og CFQ tímaáætlun virkaði ekki á skilvirkan hátt). Eins og er, þegar SSD drif eru notuð, hefur flokkun misst merkingu sína og CFQ tímaáætlunin er ekki lengur notuð í kjarnanum.

Með hliðsjón af því að nútíma drif hafa orðið hraðari og snjallari, auðlindadreifingarkerfið í Linux kjarnanum hefur verið endurskoðað og sum undirkerfi hafa verið endurhönnuð, sögðu Cloudflare verkfræðingar bætt við dm-crypt er með nýjan rekstrarham sem útilokar notkun á óþarfa biðröðum og ósamstilltum símtölum. Stillingin er virkjuð með sérstökum fána „force_inline“ og færir dm-crypt í formi einfalds umboðs sem dulkóðar og afkóðar komandi beiðnir. Samskipti við Crypto API hafa verið fínstillt með því að velja beinlínis dulkóðunaralgrím sem starfa í samstilltum ham og nota ekki beiðnarraðir. Til að vinna samstillt með Crypto API var lagt til eining sem gerir þér kleift að nota FPU/AES-NI fyrir hröðun og framsenda dulkóðunar- og afkóðunarbeiðnir beint.

Fyrir vikið var hægt að meira en tvöfalda afköst dm-crypt við prófun á vinnsluminni disk - afköst jukust úr 294 MB/s (2 x 147 MB/s) í 640 MB/s, sem er mjög nálægt afköst berrar dulkóðunar (696 MB /s).

Cloudflare hefur útbúið plástra sem flýta verulega fyrir dulkóðun diska í Linux

Cloudflare hefur útbúið plástra sem flýta verulega fyrir dulkóðun diska í Linux

Cloudflare hefur útbúið plástra sem flýta verulega fyrir dulkóðun diska í Linux

Þegar álag var prófað á raunverulegum netþjónum sýndi nýja útfærslan frammistöðu mjög nálægt stillingunum sem keyrðu án dulkóðunar og að virkja dulkóðun á netþjónum með Cloudflare skyndiminni hafði engin áhrif á svarhraða. Í framtíðinni ætlar Cloudflare að flytja tilbúna plástra yfir á aðal Linux kjarnann, en áður en það gerist þarf að endurvinna þá, þar sem þeir eru fínstilltir fyrir ákveðna álag og ná ekki yfir öll notkunarsvið, til dæmis dulkóðun á lágu -máttur innbyggð tæki.

Cloudflare hefur útbúið plástra sem flýta verulega fyrir dulkóðun diska í Linux

Heimild: opennet.ru

Bæta við athugasemd