Spoločnosť Cloudflare pripravila opravy, ktoré radikálne zrýchľujú šifrovanie disku v Linuxe

Vývojári zo spoločnosti Cloudflare oznámili o optimalizácii výkonu šifrovania disku v jadre Linuxu. V dôsledku toho boli pripravené záplaty pre subsystém dm-crypt a Crypto API, ktoré v syntetickom teste viac než zdvojnásobili priepustnosť pri čítaní a zápise, ako aj znížili latencie na polovicu. Pri testovaní na reálnom hardvéri sa náklady na šifrovanie podarilo znížiť takmer na úroveň pozorovanú pri práci s diskom bez šifrovania dát.

Cloudflare používa dm-crypt na šifrovanie dát na úložných zariadeniach, ktoré sa používajú na cacheovanie obsahu v sieti CDN. Dm-crypt funguje na úrovni blokového zariadenia a vykonáva šifrovanie zápisových vstupov a dešifrovanie čítacích požiadaviek, pričom vystupuje ako vrstva medzi blokovým zariadením a ovládačom súborového systému.

Spoločnosť Cloudflare pripravila opravy, ktoré radikálne zrýchľujú šifrovanie disku v Linuxe

Na hodnotenie výkonu dm-crypt sa pomocou balíka Flexible I/O tester uskutočnilo meranie rýchlosti práce so šifrovanými a nešifrovanými oddielmi na RAM-disku umiestnenom v RAM, aby sa vylúčili výkyvy výkonu diskov a zameralo sa na výkon kódu. Pre nešifrované oddiely sa výkon čítania a zápisu udržiaval na úrovni 1126 MB/s, ale po zapnutí šifrovania sa rýchlosť znížila o 7-krát a dosiahla 147 MB/s.

Spočiatku sa objavili pochybnosti o použití neefektívnych algoritmov v kryptosystéme jadra. V testoch bol použitý najrýchlejší algoritmus aes-xts s 256-bitovým šifrovacím kľúčom, ktorého výkon pri vykonávaní 'cryptsetup benchmark' je viac než dvakrát vyšší ako výsledok získaný v teste RAM-disku. Experimenty s vlajkami dm-crypt na ladění výkonu nepriniesli žiadne výsledky: pri použití vlajky '--perf-same_cpu_crypt' sa výkon dokonca znížil na 136 MB/s, a pri použití vlajky '--perf-submit_from_crypt_cpus' vzrástol len na 166 MB/s.

Hlbšie preskúmanie logiky práce ukázalo, že dm-crypt nie je taký jednoduchý, ako sa zdá — keď systémový vodič FS pošle požiadavku na zápis, dm-crypt ju okamžite nespracuje, ale vloží do fronty „kcryptd“, ktorú sa nespracováva okamžite, ale pri vhodnej príležitosti. Z fronty sa požiadavka odosiela do Linux Crypto API na vykonanie šifrovania. Keďže Crypto API používa asynchrónny model vykonávania, šifrovanie sa tiež nevykonáva okamžite, ale prechádza cez ďalšiu frontu. Po dokončení šifrovania sa dm-crypt pokúša vykonať triedenie čakajúcich požiadaviek na zápis pomocou vyhľadávacieho stromu. červeno-čierny. Na konci sa opäť určité vlákno jadra so zreteľným oneskorením chytí nahromadené požiadavky vstupov/výstupov a odosiela ich do zásobníka blokového zariadenia.

Spoločnosť Cloudflare pripravila opravy, ktoré radikálne zrýchľujú šifrovanie disku v Linuxe

Pri čítaní najskôr dm-crypt pridáva do fronty „kcryptd_io“ požiadavku na získanie údajov z úložiska. Po určitom čase sú údaje dostupné a umiestnia sa do fronty „kcryptd“ na dešifrovanie.
Kcryptd odosiela požiadavku do Linux Crypto API, ktoré dešifruje informácie v asynchrónnom režime. Požiadavky vždy neprejdú cez všetky fronty, ale v najhoršom prípade môže požiadavka na zápis uviaznuť vo frontách až 4-krát, zatiaľ čo požiadavka na čítanie až 3-krát. Každé zaradenie do fronty vedie k vzniku oneskorení, ktoré sú kľúčovou príčinou významného zníženia výkonu dm-crypt.

Použitie front je podmienené potrebou pracovať v podmienkach výskytu prerušenia. V roku 2005, keď bola implementovaná súčasná pracovná schéma dm-crypt na základe front, Crypto API ešte nebol asynchrónny. Po prevode Crypto API na asynchrónny model vykonávania sa v podstate začala aplikovať dvojitá ochrana. Fronty boli taktiež zavedené na zníženie spotreby zásobníka jadra, avšak po jeho zvýšení v roku 2014 tieto optimalizácie stratili relevanciu. Dodatočný front „kcryptd_io“ bol zavedený na prekonanie úzkeho miesta, vedúceho k čakaniu na pridelenie pamäte pri veľkom počte požiadaviek. V roku 2015 bola navyše zavedená fáza triedenia, pretože požiadavky na šifrovanie na viacprocesorových systémoch sa mohli dokončovať bez dodržania poradia odoslania (namiesto sekvenčného prístupu na disk sa prístup vykonával náhodne a plánovač CFQ nefungoval efektívne). V súčasnosti pri použití SSD úložísk triedenie stratilo zmysel a plánovač CFQ sa už v jadre nepoužíva.

Vzhľadom na to, že moderné úložiská sa stali rýchlejšími a inteligentnejšími, systém rozdeľovania zdrojov v jadre Linux bol prehodnotený a niektoré subsystémy boli prerobené, inžinieri Cloudflare bol pridaný v dm-crypt nový pracovný režim, zbavený použitia zbytočných front a asynchrónnych volaní. Režim sa aktivuje samostatnou vlajkou „force_inline“ a prevádza dm-crypt na formu jednoduchého proxy, šifrujúceho a dešifrujúceho prichádzajúce požiadavky. Interakcia s Crypto API bola optimalizovaná jasným výberom šifrovacích algoritmov, pracujúcich v synchrónnom režime a nepoužívajúcich fronty požiadaviek. Pre synchrónnu prácu s Crypto API bol je navrhnutý modul, ktorý umožňuje používať FPU/AES-NI na zrýchlenie a priamo prenáša požiadavky na šifrovanie a dešifrovanie.

Výsledne sa počas testovania RAM disku podarilo viac než dvojčinne zvýšiť výkon dm-crypt — výkon vzrástol z 294 MB/s (2 x 147 MB/s) na 640 MB/s, čo je veľmi blízko výkonu holého šifrovania (696 MB/s).

Spoločnosť Cloudflare pripravila opravy, ktoré radikálne zrýchľujú šifrovanie disku v Linuxe

Spoločnosť Cloudflare pripravila opravy, ktoré radikálne zrýchľujú šifrovanie disku v Linuxe

Spoločnosť Cloudflare pripravila opravy, ktoré radikálne zrýchľujú šifrovanie disku v Linuxe

Pri testovaní záťaže na reálnych serveroch nová implementácia ukázala výkon veľmi blízky konfigurácii, ktorá funguje bez šifrovania, a zapnutie šifrovania na serveroch s cachingom Cloudflare nijako neovplyvnilo rýchlosť odozvy. V budúcnosti plánuje Cloudflare poskytnúť pripravené opravy do hlavného jadra Linuxu, ale predtým ich bude potrebné prepracovať, pretože sú optimalizované pre konkrétnu záťaž a nepokrývajú všetky oblasti použitia, napríklad šifrovanie na slabších vstavaných zariadeniach.

Spoločnosť Cloudflare pripravila opravy, ktoré radikálne zrýchľujú šifrovanie disku v Linuxe

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster