Cloudflare Linux жүйесінде дискіні шифрлауды күрт жеделдететін патчтарды дайындады

Cloudflare әзірлеушілері деді Linux ядросындағы дискіні шифрлау өнімділігін оңтайландыру бойынша жұмыстарды жүргізу туралы. Нәтижесінде олар дайындалды патчтар ішкі жүйе үшін дм-крипт және Crypto API, бұл синтетикалық сынақта оқу мен жазуды екі еседен астам өткізуге, сондай-ақ кешігуді екі есе азайтуға мүмкіндік берді. Нақты аппараттық құралда сыналған кезде шифрлаудың үстеме шығындары деректерді шифрлаусыз дискімен жұмыс істеген кезде байқалатын деңгейге дейін төмендеді.

Cloudflare CDN ішіндегі мазмұнды кэштеу үшін пайдаланылатын сақтау құрылғыларындағы деректерді шифрлау үшін dm-crypt пайдаланады. Dm-crypt блоктық құрылғы деңгейінде жұмыс істейді және блоктық құрылғы мен файлдық жүйе драйвері арасындағы қабат рөлін атқара отырып, енгізу/шығару жазу сұрауларын шифрлайды және оқу сұраныстарын шешеді.

Cloudflare Linux жүйесінде дискіні шифрлауды күрт жеделдететін патчтарды дайындады

Пакет арқылы dm-crypt өнімділігін бағалау Икемді енгізу/шығару сынағы Біз диск өнімділігіндегі ауытқуларды жою және код өнімділігіне назар аудару үшін ЖЖҚ-да орналасқан RAM дискісінде шифрланған және шифрланбаған бөлімдермен жұмыс істеу жылдамдығын өлшедік. Шифрланбаған бөлімдер үшін оқу және жазу өнімділігі 1126 МБ/с деңгейінде қалды, бірақ шифрлау қосылған кезде жылдамдық төмендеді. 7 рет және 147 МБ/с құрады.

Алдымен ядроның криптожүйесінде тиімсіз алгоритмдерді қолдану туралы күдік туындады. Бірақ сынақтарда 256 шифрлау кілті бар aes-xts ең жылдам алгоритмі қолданылды, оның өнімділігі «cryptsetup эталоны» іске қосылған кездегі жедел жады дискісін сынау кезінде алынған нәтижеден екі есе жоғары. Өнімділікті реттеуге арналған dm-crypt жалаушаларымен жүргізілген эксперименттер нәтиже бермеді: «--perf-same_cpu_crypt» жалауын пайдаланған кезде өнімділік тіпті 136 МБ/с дейін төмендеді, ал «--perf-submit_from_crypt_cpus» жалаушасын көрсеткенде ол тек өсті. 166 МБ/с дейін.

Операциялық логиканы тереңірек талдау dm-crypt қарапайым емес екенін көрсетті - FS драйверінен жазу сұранысы келгенде, dm-crypt оны дереу өңдемейді, бірақ оны «kcryptd» кезегіне қояды. бірден талданбайды, бірақ қолайлы сәтте. Кезектен сұрау шифрлауды орындау үшін Linux Crypto API интерфейсіне жіберіледі. Бірақ Crypto API асинхронды орындау үлгісін пайдаланатындықтан, шифрлау да бірден орындалмайды, бірақ басқа кезекті айналып өтеді. Шифрлау аяқталғаннан кейін dm-crypt іздеу ағашын пайдаланып күтудегі жазу сұрауларын сұрыптауға әрекет етуі мүмкін қызыл-қара. Соңында бөлек ядро ​​ағыны қайтадан белгілі бір кідіріспен жинақталған енгізу-шығару сұраныстарын алады және оларды блоктық құрылғы стекіне жібереді.

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 пайдалануға мүмкіндік беретін және шифрлау мен шифрды шешу сұрауларын тікелей жіберетін модуль.

Нәтижесінде, жедел жады дискісін тестілеу кезінде dm-crypt өнімділігін екі еседен астам арттыруға мүмкіндік туды - өнімділік 294 МБ/с (2 x 147 МБ/с) 640 МБ/с дейін өсті, бұл өте жақын. жалаң шифрлау өнімділігі (696 МБ/с).

Cloudflare Linux жүйесінде дискіні шифрлауды күрт жеделдететін патчтарды дайындады

Cloudflare Linux жүйесінде дискіні шифрлауды күрт жеделдететін патчтарды дайындады

Cloudflare Linux жүйесінде дискіні шифрлауды күрт жеделдететін патчтарды дайындады

Нақты серверлерде жүктемені сынау кезінде жаңа енгізу шифрлаусыз жұмыс істейтін конфигурацияға өте жақын өнімділікті көрсетті және Cloudflare кэші бар серверлерде шифрлауды қосу жауап жылдамдығына әсер етпеді. Болашақта Cloudflare дайындалған патчтарды негізгі Linux ядросына беруді жоспарлап отыр, бірақ оған дейін оларды қайта өңдеу қажет болады, өйткені олар белгілі бір жүктеме үшін оңтайландырылған және қолданбаның барлық салаларын қамтымайды, мысалы, төмен деңгейде шифрлау - қуатты кірістірілген құрылғылар.

Cloudflare Linux жүйесінде дискіні шифрлауды күрт жеделдететін патчтарды дайындады

Ақпарат көзі: opennet.ru

пікір қалдыру