Cloudflare нь Линукс дээр дискний шифрлэлтийг хурдасгах засваруудыг бэлдсэн

Cloudflare-ийн хөгжүүлэгчид хэлсэн Линукс цөм дэх дискний шифрлэлтийн гүйцэтгэлийг оновчтой болгох ажлыг гүйцэтгэх тухай. Үүний үр дүнд тэд бэлтгэлтэй байсан засварууд дэд системийн хувьд dm-crypt болон Crypto API нь синтетик тестийн унших, бичих чадварыг хоёр дахин нэмэгдүүлэх, мөн хоцролтыг хоёр дахин багасгах боломжийг олгосон. Бодит техник хангамж дээр туршиж үзэхэд шифрлэлтийн нэмэлт зардал өгөгдөл шифрлэлтгүйгээр дисктэй ажиллахад ажиглагдсан бараг түвшинд хүртэл буурсан байна.

Cloudflare нь CDN дээрх агуулгыг кэш хийхэд ашигладаг хадгалах төхөөрөмж дээрх өгөгдлийг шифрлэхийн тулд dm-crypt ашигладаг. Dm-crypt нь блок төхөөрөмжийн түвшинд ажилладаг бөгөөд бичих оролт гаралтын хүсэлтийг шифрлэж, унших хүсэлтийг тайлж блок төхөөрөмж болон файлын системийн драйверын хооронд давхаргын үүрэг гүйцэтгэдэг.

Cloudflare нь Линукс дээр дискний шифрлэлтийг хурдасгах засваруудыг бэлдсэн

Багцыг ашиглан dm-crypt-ийн гүйцэтгэлийг үнэлэх Уян хатан оролт гаралтын шалгагч Бид дискний гүйцэтгэлийн хэлбэлзлийг арилгах, кодын гүйцэтгэлд анхаарлаа хандуулахын тулд RAM-д байрлах RAM диск дээрх шифрлэгдсэн болон шифрлэгдээгүй хуваалтуудтай ажиллах хурдыг хэмжсэн. Шифрлэгдээгүй хуваалтуудын хувьд унших, бичих гүйцэтгэл 1126 МБ/с хэвээр байсан ч шифрлэлтийг идэвхжүүлсэн үед хурд буурсан. 7 удаа бөгөөд 147 МБ/с болсон.

Эхэндээ цөмийн криптосистемд үр ашиггүй алгоритмуудыг ашигласан тухай сэжиг төрж байв. Гэхдээ туршилтууд нь хамгийн хурдан алгоритм болох aes-xts-ийг 256 шифрлэлтийн түлхүүрээр ашигласан бөгөөд "cryptsetup benchmark"-ыг ажиллуулах явцад гүйцэтгэл нь RAM дискийг турших явцад олж авсан үр дүнгээс хоёр дахин өндөр байна. Гүйцэтгэлийг тааруулахын тулд dm-crypt туг ашиглан хийсэн туршилтууд үр дүнд хүрээгүй: "--perf-same_cpu_crypt" тугийг ашиглах үед гүйцэтгэл бүр 136 MB/s хүртэл буурч, "--perf-submit_from_crypt_cpus" гэсэн тугийг зааж өгөхөд зөвхөн нэмэгдсэн. 166 MB/s хүртэл.

Үйлдлийн логикийн гүнзгий дүн шинжилгээ нь dm-crypt нь санагдсан шиг тийм ч энгийн зүйл биш гэдгийг харуулсан - FS драйвераас бичих хүсэлт ирэхэд dm-crypt үүнийг шууд боловсруулдаггүй, харин "kcryptd" дараалалд оруулдаг. нэн даруй задлан шинжилдэггүй, гэхдээ тохиромжтой үед. Дараалалаас хүсэлтийг Linux Crypto API руу илгээж шифрлэлт хийнэ. Гэхдээ Crypto API нь асинхрон гүйцэтгэлийн загварыг ашигладаг тул шифрлэлт шууд хийгддэггүй, харин өөр дарааллыг алгасдаг. Шифрлэлт дууссаны дараа dm-crypt нь хайлтын модыг ашиглан хүлээгдэж буй бичих хүсэлтийг эрэмбэлэхийг оролдож болно улаан хар. Төгсгөлд нь тусдаа цөмийн утас дахин тодорхой сааталтайгаар хуримтлагдсан оролт/гаралтын хүсэлтийг хүлээн авч блок төхөөрөмжийн стек рүү илгээдэг.

Cloudflare нь Линукс дээр дискний шифрлэлтийг хурдасгах засваруудыг бэлдсэн

Унших үед 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 төлөвлөгчийг цөмд ашиглахаа больсон.

Орчин үеийн хөтчүүд илүү хурдан, ухаалаг болж байгааг харгалзан Линуксийн цөм дэх нөөцийн хуваарилалтын системийг шинэчилж, зарим дэд системүүдийг шинэчилсэн гэж Cloudflare инженерүүд нэмсэн dm-crypt нь шаардлагагүй дараалал, асинхрон дуудлагын хэрэглээг арилгадаг шинэ үйлдлийн горимтой болсон. Уг горим нь "force_inline" гэсэн тусдаа тугаар идэвхжсэн бөгөөд ирж буй хүсэлтийг шифрлэж, тайлах энгийн прокси хэлбэрт dm-crypt-ийг авчирдаг. Синхрон горимд ажилладаг, хүсэлтийн дарааллыг ашигладаггүй шифрлэлтийн алгоритмуудыг тодорхой сонгосноор Crypto API-тай харилцах харилцааг оновчтой болгосон. Crypto API-тай синхрон ажиллахын тулд тэнд байсан санал болгосон хурдасгах зорилгоор FPU/AES-NI ашиглах боломжийг олгодог модуль бөгөөд шифрлэлт болон шифрийг тайлах хүсэлтийг шууд дамжуулдаг.

Үүний үр дүнд RAM дискийг туршиж үзэхэд dm-crypt-ийн гүйцэтгэлийг хоёр дахин нэмэгдүүлэх боломжтой болсон - гүйцэтгэл нь 294 MB/s (2 x 147 MB/s)-аас 640 MB/s хүртэл нэмэгдсэн нь маш ойрхон байна. нүцгэн шифрлэлтийн гүйцэтгэл (696 MB / s).

Cloudflare нь Линукс дээр дискний шифрлэлтийг хурдасгах засваруудыг бэлдсэн

Cloudflare нь Линукс дээр дискний шифрлэлтийг хурдасгах засваруудыг бэлдсэн

Cloudflare нь Линукс дээр дискний шифрлэлтийг хурдасгах засваруудыг бэлдсэн

Бодит серверүүд дээрх ачааллыг шалгах үед шинэ хэрэгжүүлэлт нь шифрлэлтгүйгээр ажиллаж байгаа тохиргоотой маш ойрхон гүйцэтгэлийг харуулсан бөгөөд Cloudflare кэштэй сервер дээр шифрлэлтийг идэвхжүүлсэн нь хариу өгөх хурдад ямар ч нөлөө үзүүлээгүй. Ирээдүйд Cloudflare бэлтгэсэн засваруудыг Линуксийн үндсэн цөм рүү шилжүүлэхээр төлөвлөж байгаа боловч үүнээс өмнө тэдгээрийг дахин боловсруулах шаардлагатай болно, учир нь тэдгээр нь тодорхой ачаалалд тохирсон бөгөөд хэрэглээний бүх талбарыг хамардаггүй, жишээлбэл, шифрлэлт бага түвшинд байна. - цахилгаан суурилуулсан төхөөрөмж.

Cloudflare нь Линукс дээр дискний шифрлэлтийг хурдасгах засваруудыг бэлдсэн

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх