Cloudflare imetayarisha viraka vinavyoharakisha sana usimbaji fiche wa diski katika Linux

Watengenezaji kutoka Cloudflare aliiambia kuhusu kufanya kazi ili kuboresha utendakazi wa usimbaji fiche wa diski kwenye kinu cha Linux. Matokeo yake, walikuwa tayari mabaka kwa mfumo mdogo dm-crypt na Crypto API, ambayo ilifanya iwezekane zaidi ya mara mbili ya kusoma na kuandika throughput katika mtihani synthetic, pamoja na latency nusu. Ilipojaribiwa kwenye maunzi halisi, usimbaji fiche wa juu ulipunguzwa hadi karibu kiwango kilichozingatiwa wakati wa kufanya kazi na diski bila usimbaji wa data.

Cloudflare hutumia dm-crypt kusimba data kwa njia fiche kwenye vifaa vya kuhifadhi vinavyotumika kuweka akiba yaliyomo kwenye CDN. Dm-crypt hufanya kazi katika kiwango cha kifaa cha kuzuia na husimba kwa njia fiche kuandika maombi ya I/O na kusimbua maombi yaliyosomwa, ikitenda kama safu kati ya kifaa cha kuzuia na kiendesha mfumo wa faili.

Cloudflare imetayarisha viraka vinavyoharakisha sana usimbaji fiche wa diski katika Linux

Ili kutathmini utendaji wa dm-crypt kwa kutumia kifurushi Kijaribu cha I/O kinachobadilika Tulipima kasi ya kufanya kazi kwa sehemu zilizosimbwa na ambazo hazijasimbwa kwenye diski ya RAM iliyo kwenye RAM ili kuondoa mabadiliko katika utendaji wa diski na kuzingatia utendakazi wa msimbo. Kwa sehemu ambazo hazijasimbwa, utendaji wa kusoma na kuandika ulibaki kuwa 1126 MB/s, lakini kasi ilipungua wakati usimbaji fiche ulipowashwa. 7 katika wakati na ilifikia 147 MB/s.

Mwanzoni, mashaka yalitokea juu ya utumiaji wa algorithms isiyofaa katika mfumo wa kernel cryptosystem. Lakini majaribio yalitumia algorithm ya haraka zaidi, aes-xts, na funguo za usimbuaji 256, ambazo utendaji wake wakati wa kuendesha "kigezo cha kuweka cryptsetup" ni zaidi ya mara mbili ya matokeo yaliyopatikana wakati wa kujaribu diski ya RAM. Majaribio ya bendera za dm-crypt kwa urekebishaji wa utendaji hayakuzaa matokeo: wakati wa kutumia bendera ya "--perf-same_cpu_crypt", utendakazi hata ulipungua hadi 136 MB/s, na wakati wa kubainisha alama ya "--perf-submit_from_crypt_cpus" iliongezeka pekee. hadi 166 MB/s.

Mchanganuo wa kina wa mantiki ya kufanya kazi ulionyesha kuwa dm-crypt sio rahisi kama inavyoonekana - wakati ombi la kuandika linafika kutoka kwa dereva wa FS, dm-crypt haifanyi kazi mara moja, lakini huiweka kwenye foleni ya "kcryptd", ambayo haijachanganuliwa mara moja, lakini wakati unaofaa. Kutoka kwenye foleni, ombi hutumwa kwa Linux Crypto API ili kutekeleza usimbaji fiche. Lakini kwa kuwa API ya Crypto hutumia mfano wa utekelezaji wa asynchronous, usimbuaji fiche pia haufanyiki mara moja, lakini kupitisha foleni nyingine. Baada ya usimbaji fiche kukamilika, dm-crypt inaweza kujaribu kupanga maombi yanayosubiri kuandikwa kwa kutumia mti wa utafutaji nyekundu-nyeusi. Mwishoni, uzi tofauti wa kernel tena, kwa kuchelewa fulani, huchukua maombi yaliyokusanywa ya I/O na kuyatuma kwenye stack ya kifaa cha kuzuia.

Cloudflare imetayarisha viraka vinavyoharakisha sana usimbaji fiche wa diski katika Linux

Unaposoma, dm-crypt kwanza huongeza ombi kwenye foleni ya "kcryptd_io" ili kupokea data kutoka kwa hifadhi. Baada ya muda, data itapatikana na kuwekwa kwenye foleni ya "kcryptd" kwa usimbuaji.
Kcryptd hutuma ombi kwa Linux Crypto API, ambayo huondoa maelezo kwa njia isiyosawazisha. Maombi sio daima kupitia foleni zote, lakini katika hali mbaya zaidi, ombi la kuandika linaishia kwenye foleni hadi mara 4, na ombi la kusoma hadi mara 3. Kila hit kwenye foleni husababisha ucheleweshaji, ambayo ndiyo sababu kuu ya kupungua kwa utendakazi wa dm-crypt.

Matumizi ya foleni ni kutokana na haja ya kufanya kazi katika hali ambapo usumbufu hutokea. Mnamo 2005, wakati muundo wa sasa wa uendeshaji wa foleni wa dm-crypt ulipotekelezwa, API ya Crypto ilikuwa bado haijasawazishwa. Baada ya API ya Crypto kuhamishiwa kwa mfano wa utekelezaji wa asynchronous, kimsingi ulinzi wa mara mbili ulianza kutumika. Foleni pia zilianzishwa ili kuokoa matumizi ya rafu ya kernel, lakini baada ya kuongezeka kwake mnamo 2014, uboreshaji huu ulipoteza umuhimu wake. Foleni ya ziada "kcryptd_io" ilianzishwa ili kuondokana na tatizo lililosababisha kusubiri mgao wa kumbukumbu wakati idadi kubwa ya maombi inapowasili. Mnamo mwaka wa 2015, awamu ya ziada ya upangaji ilianzishwa, kwani maombi ya usimbuaji kwenye mifumo ya multiprocessor inaweza kukamilika bila mpangilio (badala ya ufikiaji wa mlolongo wa diski, ufikiaji ulifanyika kwa mpangilio wa nasibu, na mpangilio wa CFQ haukufanya kazi kwa ufanisi). Hivi sasa, wakati wa kutumia anatoa za SSD, kupanga kumepoteza maana yake, na mpangilio wa CFQ hautumiwi tena kwenye kernel.

Kwa kuzingatia kwamba viendeshi vya kisasa vimekuwa vya haraka na vyema zaidi, mfumo wa usambazaji wa rasilimali katika kernel ya Linux umerekebishwa na baadhi ya mifumo ndogo imeundwa upya, wahandisi wa Cloudflare. imeongezwa dm-crypt ina hali mpya ya kufanya kazi ambayo huondoa utumiaji wa foleni zisizo za lazima na simu zisizo sawa. Hali hii imewashwa na bendera tofauti "force_inline" na huleta dm-crypt kwenye umbo la seva mbadala ambayo husimba na kusimbua maombi yanayoingia. Mwingiliano na API ya Crypto umeboreshwa kwa kuchagua kwa uwazi kanuni za usimbaji fiche zinazofanya kazi katika hali ya usawazishaji na hazitumii foleni za maombi. Ili kufanya kazi kwa usawa na Crypto API kulikuwa iliyopendekezwa moduli inayokuruhusu kutumia FPU/AES-NI kuongeza kasi na kupeleka mbele maombi ya usimbaji fiche na kusimbua moja kwa moja.

Matokeo yake, wakati wa kupima diski ya RAM, iliwezekana zaidi ya mara mbili ya utendaji wa dm-crypt - utendaji uliongezeka kutoka 294 MB / s (2 x 147 MB ​​/ s) hadi 640 MB / s, ambayo ni karibu sana na utendaji wa usimbuaji wazi (696 MB / s).

Cloudflare imetayarisha viraka vinavyoharakisha sana usimbaji fiche wa diski katika Linux

Cloudflare imetayarisha viraka vinavyoharakisha sana usimbaji fiche wa diski katika Linux

Cloudflare imetayarisha viraka vinavyoharakisha sana usimbaji fiche wa diski katika Linux

Wakati wa kujaribu mzigo kwenye seva halisi, utekelezaji mpya ulionyesha utendaji karibu sana na usanidi unaoendeshwa bila usimbaji fiche, na kuwezesha usimbaji fiche kwenye seva zilizo na akiba ya Cloudflare hakukuwa na athari kwa kasi ya majibu. Katika siku zijazo, Cloudflare inapanga kuhamisha viraka vilivyotayarishwa kwenye kernel kuu ya Linux, lakini kabla ya hapo watahitaji kufanyiwa kazi tena, kwa kuwa wameboreshwa kwa mzigo maalum na haijumuishi maeneo yote ya maombi, kwa mfano, usimbuaji chini. -vifaa vilivyopachikwa vya nguvu.

Cloudflare imetayarisha viraka vinavyoharakisha sana usimbaji fiche wa diski katika Linux

Chanzo: opennet.ru

Kuongeza maoni