Cloudflare Linuxda diskni shifrlashni sezilarli darajada tezlashtiradigan yamoqlarni tayyorladi

Cloudflare-dan ishlab chiquvchilar dedi Linux yadrosida diskni shifrlash ishini optimallashtirish bo'yicha ishlarni bajarish haqida. Natijada ular tayyorlandi yamoqlar quyi tizim uchun dm-kript va Crypto API, bu sintetik testda o'qish va yozish tezligini ikki baravar oshirish, shuningdek, kechikishni ikki baravar kamaytirish imkonini berdi. Haqiqiy uskunada sinovdan o'tkazilganda, shifrlash qo'shimcha xarajatlari ma'lumotlarni shifrlashsiz disk bilan ishlashda kuzatilgan deyarli darajaga tushirildi.

Cloudflare CDN-dagi kontentni keshlash uchun ishlatiladigan saqlash qurilmalaridagi ma'lumotlarni shifrlash uchun dm-crypt-dan foydalanadi. Dm-crypt blokli qurilma darajasida ishlaydi va kiritish-chiqarish yozish so'rovlarini shifrlaydi va blok qurilmasi va fayl tizimi drayveri o'rtasida qatlam vazifasini o'taydigan o'qish so'rovlarini shifrlaydi.

Cloudflare Linuxda diskni shifrlashni sezilarli darajada tezlashtiradigan yamoqlarni tayyorladi

Paket yordamida dm-crypt ishlashini baholash Moslashuvchan kiritish-chiqarish sinovchisi Biz RAMda joylashgan RAM diskida shifrlangan va shifrlanmagan bo'limlar bilan ishlash tezligini o'lchab, diskning ishlashidagi tebranishlarni bartaraf etish va kod ishlashiga e'tibor qaratdik. Shifrlanmagan bo'limlar uchun o'qish va yozish unumdorligi 1126 MB/s darajasida qoldi, lekin shifrlash yoqilganda tezlik pasaydi. 7 marta va 147 MB/s ni tashkil etdi.

Avvaliga yadro kriptotizimida samarasiz algoritmlardan foydalanish haqida shubha paydo bo'ldi. Ammo testlarda 256 ta shifrlash kalitiga ega bo'lgan eng tezkor algoritm aes-xts qo'llanildi, ularning "cryptsetup benchmark" ni ishga tushirishda ishlashi operativ xotira diskini sinovdan o'tkazishda olingan natijadan ikki baravar yuqori. Samaradorlikni sozlash bo'yicha dm-crypt bayroqlari bilan o'tkazilgan tajribalar natija bermadi: "--perf-same_cpu_crypt" bayrog'idan foydalanilganda, unumdorlik hatto 136 MB/s ga kamaydi va "--perf-submit_from_crypt_cpus" belgisini ko'rsatishda u faqat oshdi. 166 MB/s gacha.

Operatsion mantiqni chuqurroq tahlil qilish shuni ko'rsatdiki, dm-crypt ko'rinadigan darajada oddiy emas - FS drayveridan yozish so'rovi kelganda, dm-crypt uni darhol qayta ishlamaydi, balki uni "kcryptd" navbatiga qo'yadi. darhol tahlil qilinmaydi, lekin qulay vaqtda. Navbatdan so'rov shifrlashni amalga oshirish uchun Linux Crypto API-ga yuboriladi. Ammo Crypto API asinxron bajarish modelidan foydalanganligi sababli, shifrlash ham darhol amalga oshirilmaydi, balki boshqa navbatni chetlab o'tadi. Shifrlash tugallangandan so'ng, dm-crypt qidiruv daraxti yordamida kutilayotgan yozish so'rovlarini saralashga urinishi mumkin qizil-qora. Oxir-oqibat, alohida yadro ipi yana ma'lum bir kechikish bilan to'plangan kiritish-chiqarish so'rovlarini oladi va ularni blokli qurilma stekiga yuboradi.

Cloudflare Linuxda diskni shifrlashni sezilarli darajada tezlashtiradigan yamoqlarni tayyorladi

O'qish paytida dm-crypt birinchi navbatda diskdan ma'lumot olish uchun "kcryptd_io" navbatiga so'rov qo'shadi. Biroz vaqt o'tgach, ma'lumotlar mavjud bo'ladi va shifrni ochish uchun "kcryptd" navbatiga qo'yiladi.
Kcryptd Linux Crypto API-ga so'rov yuboradi, u ma'lumotni asinxron tarzda hal qiladi. So'rovlar har doim ham barcha navbatlardan o'tib ketavermaydi, lekin eng yomon holatda yozish so'rovi 4 martagacha, o'qish so'rovi esa 3 martagacha navbatda turadi. Navbatdagi har bir urish kechikishlarni keltirib chiqaradi, bu dm-crypt ishlashining sezilarli pasayishining asosiy sababidir.

Navbatlardan foydalanish uzilishlar yuzaga kelgan sharoitlarda ishlash zarurati bilan bog'liq. 2005 yilda dm-cryptning navbatdagi operatsion modeli joriy etilganda, Crypto API hali asinxron emas edi. Crypto API asinxron ijro modeliga o'tkazilgandan so'ng, asosan ikki tomonlama himoya qo'llanila boshlandi. Yadro stekining sarfini tejash uchun navbatlar ham joriy etildi, biroq 2014-yilda uning ko'payishidan keyin bu optimallashtirishlar o'z ahamiyatini yo'qotdi. Ko'p sonli so'rovlar kelganda xotirani ajratishni kutishga olib keladigan qiyinchilikni bartaraf etish uchun qo'shimcha "kcryptd_io" navbati joriy etildi. 2015 yilda qo'shimcha saralash bosqichi joriy etildi, chunki ko'p protsessorli tizimlarda shifrlash so'rovlari tartibsiz bajarilishi mumkin edi (diskga ketma-ket kirish o'rniga kirish tasodifiy tartibda amalga oshirildi va CFQ rejalashtiruvchisi samarali ishlamadi). Hozirgi vaqtda SSD drayverlardan foydalanganda tartiblash o'z ma'nosini yo'qotdi va CFQ rejalashtiruvchisi yadroda endi ishlatilmaydi.

Zamonaviy drayvlar tezroq va aqlliroq bo'lganini hisobga olib, Linux yadrosidagi resurslarni taqsimlash tizimi qayta ko'rib chiqildi va ba'zi quyi tizimlar qayta ishlab chiqildi, Cloudflare muhandislari qo'shilgan dm-crypt keraksiz navbatlar va asinxron qo'ng'iroqlardan foydalanishni bartaraf etadigan yangi ish rejimiga ega. Rejim "force_inline" alohida bayroq bilan yoqiladi va dm-crypt-ni kiruvchi so'rovlarni shifrlaydigan va shifrini hal qiluvchi oddiy proksi-server ko'rinishiga keltiradi. Crypto API bilan o'zaro aloqa sinxron rejimda ishlaydigan va so'rov navbatlaridan foydalanmaydigan shifrlash algoritmlarini aniq tanlash orqali optimallashtirildi. Crypto API bilan sinxron ishlash uchun bor edi taklif qildi tezlashtirish uchun FPU/AES-NI dan foydalanishga imkon beruvchi va shifrlash va shifrni hal qilish so'rovlarini to'g'ridan-to'g'ri yo'naltiruvchi modul.

Natijada, operativ xotira diskini sinovdan o'tkazishda dm-crypt ishlashini ikki barobardan ko'proq oshirish mumkin edi - unumdorlik 294 MB / s dan (2 x 147 MB ​​/ s) 640 MB / s gacha oshdi, bu juda yaqin. yalang'och shifrlashning ishlashi (696 MB / s).

Cloudflare Linuxda diskni shifrlashni sezilarli darajada tezlashtiradigan yamoqlarni tayyorladi

Cloudflare Linuxda diskni shifrlashni sezilarli darajada tezlashtiradigan yamoqlarni tayyorladi

Cloudflare Linuxda diskni shifrlashni sezilarli darajada tezlashtiradigan yamoqlarni tayyorladi

Haqiqiy serverlarda yukni sinab ko'rishda yangi dastur shifrlashsiz ishlaydigan konfiguratsiyaga juda yaqin ishlashni ko'rsatdi va Cloudflare keshi bo'lgan serverlarda shifrlashni yoqish javob tezligiga ta'sir qilmadi. Kelajakda Cloudflare tayyorlangan yamoqlarni asosiy Linux yadrosiga o'tkazishni rejalashtirmoqda, ammo bundan oldin ularni qayta ishlash kerak bo'ladi, chunki ular ma'lum bir yuk uchun optimallashtirilgan va dasturning barcha sohalarini qamrab olmaydi, masalan, past darajadagi shifrlash. - quvvat o'rnatilgan qurilmalar.

Cloudflare Linuxda diskni shifrlashni sezilarli darajada tezlashtiradigan yamoqlarni tayyorladi

Manba: opennet.ru

a Izoh qo'shish