IzstrÄdÄtÄji no Cloudflare
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.
Lai novÄrtÄtu dm-crypt veiktspÄju, izmantojot pakotni
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
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
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).
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.
Avots: opennet.ru