Cloudflare-ը պատրաստել է պատչեր, որոնք կտրուկ արագացնում են սկավառակի կոդավորումը Linux-ում

Մշակողները Cloudflare-ից ասաց Linux միջուկում սկավառակի գաղտնագրման արդյունավետության օպտիմալացման աշխատանքների իրականացման մասին: Արդյունքում պատրաստվել են կարկատաններ ենթահամակարգի համար dm-crypt և Crypto API-ն, ինչը հնարավորություն տվեց ավելի քան կրկնապատկել կարդալու և գրելու թողունակությունը սինթետիկ թեստում, ինչպես նաև կիսով չափ կրճատել ուշացումը: Իրական սարքավորումների վրա փորձարկվելիս գաղտնագրման ծախսերը կրճատվեցին գրեթե այն մակարդակին, որը դիտվում էր առանց տվյալների գաղտնագրման սկավառակի հետ աշխատելիս:

Cloudflare-ն օգտագործում է dm-crypt՝ տվյալների գաղտնագրման համար պահեստավորման սարքերի վրա, որոնք օգտագործվում են CDN-ում բովանդակությունը քեշավորելու համար: Dm-crypt-ը գործում է բլոկ սարքի մակարդակում և ծածկագրում է մուտքի/ելքի հարցումները և վերծանում ընթերցման հարցումները՝ հանդես գալով որպես շերտ բլոկային սարքի և ֆայլային համակարգի դրայվերի միջև:

Cloudflare-ը պատրաստել է պատչեր, որոնք կտրուկ արագացնում են սկավառակի կոդավորումը Linux-ում

Փաթեթի միջոցով dm-crypt-ի կատարումը գնահատելու համար Ճկուն I/O փորձարկիչ Մենք չափել ենք կոդավորված և չգաղտնագրված միջնորմների հետ աշխատելու արագությունը RAM-ում տեղակայված RAM սկավառակի վրա՝ վերացնելու սկավառակի աշխատանքի տատանումները և կենտրոնանալու կոդի աշխատանքի վրա: Չկոդավորված միջնորմների համար կարդալու և գրելու կատարողականությունը մնաց 1126 ՄԲ/վ, բայց արագությունը նվազեց, երբ գաղտնագրումը միացված էր: 7 ժամանակին եւ կազմել է 147 ՄԲ/վ:

Սկզբում կասկածներ առաջացան միջուկի կրիպտոհամակարգում անարդյունավետ ալգորիթմների օգտագործման վերաբերյալ։ Սակայն թեստերն օգտագործել են ամենաարագ ալգորիթմը՝ aes-xts, 256 գաղտնագրման ստեղներով, որոնց կատարողականը «cryptsetup benchmark»-ը գործարկելիս ավելի քան երկու անգամ ավելի բարձր է, քան RAM սկավառակի փորձարկման արդյունքում ստացված արդյունքը: «--perf-same_cpu_crypt» դրոշն օգտագործելիս dm-crypt դրոշներով փորձարկումները կատարողականի թյունինգի համար արդյունք չեն տվել. կատարողականությունը նույնիսկ նվազել է մինչև 136 ՄԲ/վ, իսկ «--perf-submit_from_crypt_cpus» դրոշը նշելիս այն աճել է: միայն մինչև 166 ՄԲ/վ:

Գործառնական տրամաբանության ավելի խորը վերլուծությունը ցույց տվեց, որ dm-crypt-ը այնքան էլ պարզ չէ, որքան թվում է. երբ FS դրայվերից գրելու հարցում է գալիս, dm-crypt այն անմիջապես չի մշակում, այլ տեղադրում է «kcryptd» հերթում, որը. վերլուծվում է ոչ թե անմիջապես, այլ հարմար պահի դեպքում: Հերթից հարցումն ուղարկվում է Linux Crypto API՝ գաղտնագրում կատարելու համար: Բայց քանի որ Crypto API-ն օգտագործում է ասինխրոն կատարման մոդել, կոդավորումը նույնպես չի կատարվում անմիջապես, այլ շրջանցելով մեկ այլ հերթ։ Գաղտնագրման ավարտից հետո dm-crypt-ը կարող է փորձել տեսակավորել առկախ գրելու հարցումները՝ օգտագործելով որոնման ծառը կարմիր-սև. Վերջում նորից առանձին միջուկի թեմա, որոշակի ուշացումով, վերցնում է կուտակված I/O հարցումները և ուղարկում բլոկ սարքի ստեկ։

Cloudflare-ը պատրաստել է պատչեր, որոնք կտրուկ արագացնում են սկավառակի կոդավորումը Linux-ում

Ընթերցանության ժամանակ dm-crypt-ը նախ հարցում է ավելացնում «kcryptd_io» հերթում՝ սկավառակից տվյալներ ստանալու համար: Որոշ ժամանակ անց տվյալները դառնում են հասանելի և տեղադրվում են «kcryptd» հերթում՝ վերծանման համար:
Kcryptd-ը հարցում է ուղարկում Linux Crypto API-ին, որը վերծանում է տեղեկատվությունը ասինխրոն կերպով: Միշտ չէ, որ հարցումները անցնում են բոլոր հերթերով, բայց վատագույն դեպքում գրելու հարցումը հայտնվում է մինչև 4 անգամ, իսկ կարդալու հարցումը՝ մինչև 3 անգամ: Հերթին յուրաքանչյուր հարված առաջացնում է ուշացումներ, որոնք dm-crypt-ի կատարողականի զգալի նվազման հիմնական պատճառն են:

Հերթերի օգտագործումը պայմանավորված է ընդհատումների պայմաններում աշխատելու անհրաժեշտությամբ։ 2005 թվականին, երբ ներդրվեց dm-crypt-ի ներկայիս հերթերի վրա հիմնված գործող մոդելը, Crypto API-ն դեռ ասինխրոն չէր: Այն բանից հետո, երբ Crypto API-ն փոխանցվեց ասինխրոն կատարման մոդելի, ըստ էության սկսեց օգտագործվել կրկնակի պաշտպանություն: Հերթեր են մտցվել նաև միջուկի կույտի սպառումը խնայելու համար, սակայն 2014 թվականին դրա ավելացումից հետո այս օպտիմալացումները կորցրել են իրենց արդիականությունը: Լրացուցիչ «kcryptd_io» հերթ է մտցվել, որպեսզի հաղթահարվի խցանումը, որի արդյունքում սպասվում է հիշողության տեղաբաշխում, երբ մեծ թվով հարցումներ են գալիս: 2015-ին ներկայացվեց տեսակավորման լրացուցիչ փուլ, քանի որ բազմապրոցեսորային համակարգերում գաղտնագրման հարցումները կարող էին ավարտվել առանց կարգի (սկավառակի հաջորդական մուտքի փոխարեն մուտքն իրականացվել է պատահական կարգով, և CFQ ժամանակացույցը արդյունավետ չի աշխատել): Ներկայումս SSD կրիչներ օգտագործելիս տեսակավորումը կորցրել է իր նշանակությունը, և CFQ ժամանակացույցն այլևս չի օգտագործվում միջուկում։

Հաշվի առնելով, որ ժամանակակից կրիչներն ավելի արագ և խելացի են դարձել, Linux միջուկում ռեսուրսների բաշխման համակարգը վերանայվել է, և որոշ ենթահամակարգեր վերափոխվել են, Cloudflare-ի ինժեներները ավելացվել է dm-crypt-ն ունի նոր աշխատանքային ռեժիմ, որը վերացնում է անհարկի հերթերի և ասինխրոն զանգերի օգտագործումը: Ռեժիմը միացված է «force_inline» առանձին դրոշով և dm-crypt-ը բերում է պարզ վստահված անձի ձևի, որը կոդավորում և վերծանում է մուտքային հարցումները: Crypto API-ի հետ փոխգործակցությունը օպտիմիզացվել է՝ բացահայտորեն ընտրելով գաղտնագրման ալգորիթմներ, որոնք գործում են համաժամանակյա ռեժիմում և չեն օգտագործում հարցումների հերթեր: Crypto API-ի հետ սինխրոն աշխատելու համար կար առաջարկել է մոդուլ, որը թույլ է տալիս օգտագործել FPU/AES-NI արագացման համար և ուղղակիորեն փոխանցել կոդավորման և վերծանման հարցումները:

Արդյունքում, RAM սկավառակի փորձարկման ժամանակ հնարավոր եղավ ավելի քան կրկնապատկել dm-crypt-ի կատարումը. կատարողականությունը 294 ՄԲ/վ-ից (2 x 147 ՄԲ/վ) բարձրացավ մինչև 640 ՄԲ/վ, ինչը շատ մոտ է: մերկ գաղտնագրման կատարումը (696 ՄԲ/վ):

Cloudflare-ը պատրաստել է պատչեր, որոնք կտրուկ արագացնում են սկավառակի կոդավորումը Linux-ում

Cloudflare-ը պատրաստել է պատչեր, որոնք կտրուկ արագացնում են սկավառակի կոդավորումը Linux-ում

Cloudflare-ը պատրաստել է պատչեր, որոնք կտրուկ արագացնում են սկավառակի կոդավորումը Linux-ում

Իրական սերվերների վրա բեռնվածությունը փորձարկելիս նոր իրականացումը ցույց տվեց կատարողականություն, որը շատ մոտ է առանց կոդավորման գործարկվող կազմաձևին, և Cloudflare քեշով սերվերների վրա գաղտնագրման հնարավորությունը ոչ մի ազդեցություն չուներ արձագանքման արագության վրա: Ապագայում Cloudflare-ը նախատեսում է պատրաստի պատչերը փոխանցել Linux-ի հիմնական միջուկին, սակայն մինչ այդ դրանք պետք է վերամշակվեն, քանի որ դրանք օպտիմիզացված են որոշակի բեռի համար և չեն ընդգրկում կիրառման բոլոր ոլորտները, օրինակ՝ ցածր կոդավորումը։ - էներգիայի ներկառուցված սարքեր:

Cloudflare-ը պատրաստել է պատչեր, որոնք կտրուկ արագացնում են սկավառակի կոդավորումը Linux-ում

Source: opennet.ru

Добавить комментарий