Společnost Cloudflare připravila záplaty, které radikálně urychlují šifrování disků v Linuxu

Vývojáři ze společnosti Cloudflare uváděli o provedení práce na optimalizaci výkonu diskového šifrování v jádru Linuxu. V důsledku toho byly připraveny patche pro subsystém dm-crypt a Crypto API, které v syntetickém testu zvýšily průchodnost při čtení a zápisu více než dvojnásobně a současně snížily latence na polovinu. Při testování na reálném hardwaru se podařilo snížit režii z šifrování téměř na úroveň, jaká se pozoruje při práci s diskem bez používání šifrování dat.

Cloudflare používá dm-crypt pro šifrování dat na úložištích, které se používají pro cachování obsahu v síti CDN. Dm-crypt pracuje na úrovni blokového zařízení a vykonává šifrování přístupů pro zápis a dešifrování přístupů pro čtení, funguje jako mezivrstva mezi blokovým zařízením a ovladačem souborového systému.

Společnost Cloudflare připravila záplaty, které radikálně urychlují šifrování disků v Linuxu

Pro hodnocení výkonu dm-crypt byl použit balíček Flexible I/O tester bylo provedeno měření rychlosti práce s šifrovanými a nešifrovanými oddíly na RAM disku umístěném v RAM, aby se vyloučily kolísání výkonu disků a zaměřilo se na výkon kódu. Pro nešifrované oddíly se výkon čtení a zápisu držel na úrovni 1126 MB/s, ale při zapnutí šifrování rychlost klesla sedmkrát a dosáhla 147 MB/s.

Zpočátku se objevilo podezření na používání neefektivních algoritmů v kryptosystému jádra. V testech byl použit nejrychlejší algoritmus aes-xts se 256bitovým klíčem šifrování, jehož výkon při provádění „cryptsetup benchmark“ je více než dvakrát vyšší než výsledek dosažený při testování RAM disku. Experimenty s flagy dm-crypt pro ladění výkonu nepřinesly výsledky: při použití flagu „—perf-same_cpu_crypt“ se výkon dokonce snížil na 136 MB/s, zatímco při použití flagu „—perf-submit_from_crypt_cpus“ vzrostl pouze na 166 MB/s.

Hlubší analýza logiky práce ukázala, že dm-crypt není tak jednoduchý, jak se zdá — když FС ovladač obdrží požadavek na zápis, dm-crypt ho nezpracovává okamžitě, ale umísťuje do fronty «kcryptd», která se nevyřizuje hned, ale až v vhodném okamžiku. Z fronty je požadavek odeslán do Linux Crypto API k provedení šifrování. Ale protože Crypto API používá asynchronní model provádění, šifrování se také neprovádí okamžitě, ale přes ještě jednu frontu. Po dokončení šifrování se dm-crypt snaží provést seřazení čekajících požadavků na zápis pomocí vyhledávacího stromu. červeno-černý. Na konci specializovaný vlákno jádra znovu s určitým zpožděním zpracovává nahromaděné požadavky na vstup/výstup a odesílá je do zásobníku blokového zařízení.

Společnost Cloudflare připravila záplaty, které radikálně urychlují šifrování disků v Linuxu

Při čtení nejprve dm-crypt přidává do fronty «kcryptd_io» požadavek na získání dat ze zařízení. Po nějakém čase jsou data dostupná a umístěna do fronty «kcryptd» k dešifrování.
Kcryptd odesílá požadavek do Linux Crypto API, které dešifruje informace v asynchronním režimu. Požadavky neprocházejí vždy všemi frontami, ale v nejhorším případě může být požadavek na zápis zadržen ve frontách až 4 krát, a požadavek na čtení až 3 krát. Každé umístění do fronty vede ke vzniku zpoždění, což je klíčovým důvodem výrazného snížení výkonu dm-crypt.

Použití front je dáno potřebou fungovat v podmínkách výskytu přerušení. V roce 2005, kdy byla realizována současná model práce dm-crypt založený na frontách, Crypto API ještě nebyl asynchronní. Po přechodu Crypto API na asynchronní model provádění byla zavedena v podstatě dvojitá ochrana. Fronty byly také zavedeny pro úsporu spotřeby jádrového zásobníku, ale po jeho zvýšení v roce 2014 tyto optimalizace ztratily aktuálnost. Další fronta „kcryptd_io“ byla zavedena pro překonání úzkého místa, které vedlo k čekání na alokaci paměti při příjmu velkého počtu požadavků. V roce 2015 byla navíc zavedena fáze třídění, protože šifrovací požadavky na vícejádrových systémech mohly končit bez dodržení pořadí odeslání (namísto sekvenčního přístupu na disk došlo k přístupu náhodně a plánovač CFQ také nefungoval efektivně). V současnosti ztrácí třídění smysl při použití SSD disků a plánovač CFQ již není v jádře používán.

Vzhledem k tomu, že současné úložiště se stala rychlejšími a chytřejšími, byla přepracována systémová distribuce zdrojů v jádru Linux a některé podsystémy byly přepracovány, inženýři Cloudflare. přidali V dm-crypt je nový pracovní režim zbavený používání nadbytečných front a asynchronních volání. Režim se aktivuje pomocí samostatné vlajky „force_inline“ a převede dm-crypt na formu jednoduchého proxy, které šifruje a dešifruje příchozí požadavky. Interakce s Crypto API byla optimalizována výslovným výběrem šifrovacích algoritmů, které pracují v synchronním režimu a nevyužívají fronty požadavků. Pro synchronní práci s Crypto API byl. byla navržena modul, který umožňuje používat FPU/AES-NI pro zrychlení a přímo předává požadavky na šifrování a dešifrování.

Nakonec se podařilo při testování RAM disku více než dvakrát zvýšit výkon dm-crypt – výkon vzrostl z 294 MB/s (2 x 147 MB/s) na 640 MB/s, což je velmi blízko výkonu holého šifrování (696 MB/s).

Společnost Cloudflare připravila záplaty, které radikálně urychlují šifrování disků v Linuxu

Společnost Cloudflare připravila záplaty, které radikálně urychlují šifrování disků v Linuxu

Společnost Cloudflare připravila záplaty, které radikálně urychlují šifrování disků v Linuxu

Při testování zátěže na skutečných serverech nová implementace ukázala výkonnost velmi blízkou konfiguraci bez šifrování, a zapnutí šifrování na serverech s mezipamětí Cloudflare nijak neovlivnilo rychlost odezvy. V budoucnu plánuje Cloudflare zaslat připravené patche do jádra Linuxu, ale předtím je třeba je přepracovat, protože jsou optimalizovány pro konkrétní zátěž a nepokrývají všechny oblasti použití, například šifrování na slabých vestavěných zařízeních.

Společnost Cloudflare připravila záplaty, které radikálně urychlují šifrování disků v Linuxu

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster