Cloudflare-dən tərtibatçılar
Cloudflare CDN-də məzmunu keşləmək üçün istifadə edilən saxlama cihazlarında məlumatları şifrələmək üçün dm-crypt-dən istifadə edir. Dm-crypt blok cihazı səviyyəsində işləyir və blok cihazı ilə fayl sistemi sürücüsü arasında bir təbəqə rolunu oynayaraq yazma I/O sorğularını şifrələyir və oxunmuş sorğuların şifrəsini açır.
Paketdən istifadə edərək dm-crypt işini qiymətləndirmək
Əvvəlcə nüvə kriptosistemində səmərəsiz alqoritmlərin istifadəsi ilə bağlı şübhələr yarandı. Lakin testlər 256 şifrələmə açarı ilə ən sürətli aes-xts alqoritmini istifadə etdi ki, bu da "kriptsetup etalonunu" işlədərkən performansı RAM diskini sınaqdan keçirərkən əldə edilən nəticədən iki dəfə yüksəkdir. Performans tənzimləməsi üçün dm-crypt bayraqları ilə aparılan təcrübələr nəticə vermədi: “--perf-same_cpu_crypt” bayrağından istifadə edərkən performans hətta 136 MB/s-ə qədər azaldı və “--perf-submit_from_crypt_cpus” bayrağını göstərərkən o, yalnız artdı. 166 MB/s-ə qədər.
Əməliyyat məntiqinin daha dərin təhlili göstərdi ki, dm-crypt göründüyü qədər sadə deyil - FS sürücüsündən yazma sorğusu gəldikdə, dm-crypt onu dərhal emal etmir, əksinə onu "kcryptd" növbəsinə yerləşdirir. dərhal təhlil edilmir, lakin əlverişli an olduqda. Növbədən sorğu şifrələməni həyata keçirmək üçün Linux Kripto API-yə göndərilir. Lakin Crypto API asinxron icra modelindən istifadə etdiyi üçün şifrələmə də dərhal yerinə yetirilmir, başqa növbəni keçərək həyata keçirilir. Şifrələmə tamamlandıqdan sonra dm-crypt axtarış ağacından istifadə edərək gözlənilən yazma sorğularını çeşidləməyə cəhd edə bilər
Oxuyarkən dm-crypt əvvəlcə sürücüdən məlumat almaq üçün “kcryptd_io” növbəsinə sorğu əlavə edir. Bir müddət sonra məlumatlar əlçatan olur və şifrənin açılması üçün “kcryptd” növbəsinə yerləşdirilir.
Kcryptd, məlumatı asinxron şəkildə deşifrə edən Linux Crypto API-yə sorğu göndərir. Sorğular həmişə bütün növbələrdən keçmir, lakin ən pis halda, yazma sorğusu 4 dəfəyə qədər, oxunma sorğusu isə 3 dəfəyə qədər növbələrə düşür. Növbəyə hər vurulma gecikmələrə səbəb olur ki, bu da dm-kript performansının əhəmiyyətli dərəcədə azalmasının əsas səbəbidir.
Növbələrin istifadəsi fasilələrin baş verdiyi şəraitdə işləmək ehtiyacı ilə bağlıdır. 2005-ci ildə dm-crypt-in hazırkı növbəyə əsaslanan əməliyyat modeli tətbiq edildikdə, Crypto API hələ asinxron deyildi. Crypto API asinxron icra modelinə köçürüldükdən sonra mahiyyətcə ikiqat qorunma istifadə edilməyə başlandı. Növbələr də ləpə yığınının istehlakına qənaət etmək üçün tətbiq edildi, lakin 2014-cü ildə artımdan sonra bu optimallaşdırmalar öz aktuallığını itirdi. Çoxlu sayda sorğu gələndə yaddaşın ayrılmasını gözləməklə nəticələnən darboğazı aradan qaldırmaq üçün əlavə növbə "kcryptd_io" təqdim edildi. 2015-ci ildə əlavə çeşidləmə mərhələsi tətbiq olundu, çünki çoxprosessorlu sistemlərdə şifrələmə sorğuları sıradan çıxa bilər (diskə ardıcıl giriş əvəzinə giriş təsadüfi qaydada həyata keçirilirdi və CFQ planlaşdırıcı səmərəli işləmədi). Hal-hazırda, SSD disklərindən istifadə edərkən, çeşidləmə mənasını itirdi və CFQ planlaşdırıcısı artıq nüvədə istifadə edilmir.
Müasir disklərin daha sürətli və daha ağıllı olduğunu nəzərə alaraq, Linux nüvəsindəki resurs paylama sistemi yenidən işlənib və bəzi alt sistemlər yenidən işlənib, Cloudflare mühəndisləri
Nəticədə, RAM diskini sınaqdan keçirərkən dm-kriptin məhsuldarlığını iki dəfədən çox artırmaq mümkün oldu - performans 294 MB/s-dən (2 x 147 MB/s) 640 MB/s-ə yüksəldi, bu da çox yaxındır. çılpaq şifrələmənin performansı (696 MB / s).
Həqiqi serverlərdə yükü sınaqdan keçirərkən, yeni tətbiqetmə şifrələmədən işləyən konfiqurasiyaya çox yaxın performans göstərdi və Cloudflare keşi olan serverlərdə şifrələmənin aktivləşdirilməsi cavab sürətinə heç bir təsir göstərmədi. Gələcəkdə Cloudflare hazırlanmış yamaları əsas Linux nüvəsinə köçürməyi planlaşdırır, lakin bundan əvvəl onlar yenidən işlənməli olacaqlar, çünki onlar müəyyən bir yük üçün optimallaşdırılıb və tətbiqin bütün sahələrini əhatə etmir, məsələn, aşağı səviyyədə şifrələmə -güclü quraşdırılmış qurğular.
Mənbə: opennet.ru