Cloudflare heeft patches uitgebracht die de schijfversleuteling aanzienlijk versnellen. Linux

Ontwikkelaars van Cloudflare vertelde о проведении работы по оптимизации производительности дискового шифрования в ядре Linux. В результате были подготовлены pleisters voor subsysteem dm-crypte en Crypto API, die het mogelijk maakte om de lees- en schrijfdoorvoer in de synthetische test meer dan te verdubbelen en de latentie te halveren. Bij tests op echte hardware werd de overhead van de encryptie teruggebracht tot bijna het niveau dat werd waargenomen bij het werken met een schijf zonder gegevensencryptie.

Cloudflare gebruikt dm-crypt om gegevens te versleutelen op opslagapparaten die worden gebruikt om inhoud op het CDN te cachen. Dm-crypt werkt op blokapparaatniveau en codeert schrijf-I/O-verzoeken en decodeert leesverzoeken, en fungeert als een laag tussen het blokapparaat en het bestandssysteemstuurprogramma.

Cloudflare heeft patches uitgebracht die de schijfversleuteling aanzienlijk versnellen. Linux

Om de prestaties van dm-crypt te evalueren met behulp van het pakket Flexibele I/O-tester We hebben de snelheid gemeten van het werken met gecodeerde en niet-gecodeerde partities op een RAM-schijf in het RAM-geheugen om schommelingen in de schijfprestaties te elimineren en ons te concentreren op de codeprestaties. Voor niet-gecodeerde partities bleven de lees- en schrijfprestaties 1126 MB/s, maar de snelheid nam af wanneer codering was ingeschakeld 7 in de tijd en bedroeg 147 MB/s.

In eerste instantie ontstond er argwaan over het gebruik van inefficiënte algoritmen in het kernelcryptosysteem. Maar de tests gebruikten het snelste algoritme, aes-xts, met 256 encryptiesleutels, waarvan de prestaties bij het uitvoeren van de “cryptsetup benchmark” meer dan twee keer zo hoog zijn als het resultaat verkregen bij het testen van een RAM-schijf. Experimenten met dm-crypt-vlaggen voor het afstemmen van de prestaties leverden geen resultaten op: bij gebruik van de vlag “--perf-same_cpu_crypt” daalde de prestatie zelfs tot 136 MB/s, en bij het specificeren van de vlag “--perf-submit_from_crypt_cpus” nam deze alleen maar toe tot 166 MB/s.

Более глубокий разбор логики работы показал, что dm-crypt не так прост как кажется — при поступлении от драйвера ФС запроса на запись, dm-crypt не обрабатывает его сразу, а помещает в очередь «kcryptd», которая разбирается не сразу, а при наступлении удобного момента. Из очереди запрос отправляется в Linux Crypto API для выполнения шифрования. Но так как Crypto API использует асинхронную модель выполнения, шифрование также производится не сразу, а минуя ещё одну очередь. После завершения шифрования dm-crypt может пытаться выполнить сортировку ожидающих запросов на запись, используя дерево поиска rood Zwart. Aan het einde pikt een afzonderlijke kernelthread opnieuw, met een bepaalde vertraging, de verzamelde I/O-verzoeken op en stuurt deze naar de blokapparaatstack.

Cloudflare heeft patches uitgebracht die de schijfversleuteling aanzienlijk versnellen. Linux

Bij het lezen voegt dm-crypt eerst een verzoek toe aan de wachtrij “kcryptd_io” om gegevens van de schijf te ontvangen. Na enige tijd komen de gegevens beschikbaar en worden ze in de “kcryptd”-wachtrij geplaatst voor decodering.
Kcryptd отправляет запрос в Linux Crypto API, которые расшифровывает информацию в асинхронном режиме. Запросы не всегда проходят по всем очередям, но в худшем сценарии запрос на запись оседает в очередях до 4 раз, а запрос на чтение до 3 раз. Каждое попадание в очередь приводит к возникновению задержек, которые и являются ключевой причиной значительного снижения производительности dm-crypt.

Het gebruik van wachtrijen is te wijten aan de noodzaak om te werken in omstandigheden waarin onderbrekingen optreden. In 2005, toen het huidige, op wachtrijen gebaseerde besturingsmodel van dm-crypt werd geïmplementeerd, was de Crypto API nog niet asynchroon. Nadat de Crypto API was overgezet naar een asynchroon uitvoeringsmodel, begon er in wezen dubbele bescherming te worden gebruikt. Er werden ook wachtrijen geïntroduceerd om het verbruik van de kernelstack te besparen, maar na de verhoging in 2014 verloren deze optimalisaties hun relevantie. Er is een extra wachtrij "kcryptd_io" geïntroduceerd om het knelpunt te overwinnen dat resulteert in het wachten op geheugentoewijzing wanneer een groot aantal verzoeken binnenkomt. In 2015 werd een extra sorteerfase geïntroduceerd, omdat coderingsverzoeken op systemen met meerdere processors buiten de juiste volgorde konden worden voltooid (in plaats van sequentiële toegang tot de schijf werd de toegang in willekeurige volgorde uitgevoerd en werkte de CFQ-planner niet efficiënt). Momenteel heeft sorteren bij het gebruik van SSD-schijven zijn betekenis verloren en wordt de CFQ-planner niet langer in de kernel gebruikt.

Учитывая то, что современные накопители стали быстрее и умнее, система распределения ресурсов в ядре Linux была пересмотрена а некоторые подсистемы переработаны, инженеры Cloudflare toegevoegd dm-crypt heeft een nieuwe bedieningsmodus die het gebruik van onnodige wachtrijen en asynchrone oproepen elimineert. De modus wordt mogelijk gemaakt door een aparte vlag “force_inline” en brengt dm-crypt in de vorm van een eenvoudige proxy die inkomende verzoeken codeert en decodeert. De interactie met de Crypto API is geoptimaliseerd door expliciet te kiezen voor versleutelingsalgoritmen die in synchrone modus werken en geen gebruik maken van wachtrijen voor verzoeken. Om synchroon te werken met de Crypto API was er voorgesteld een module waarmee u FPU/AES-NI kunt gebruiken voor versnelling en verzoeken om versleuteling en decodering direct doorstuurt.

Als gevolg hiervan was het bij het testen van een RAM-schijf mogelijk om de prestaties van dm-crypt meer dan te verdubbelen - de prestaties namen toe van 294 MB/s (2 x 147 MB/s) naar 640 MB/s, wat zeer dicht in de buurt komt van de prestaties van kale encryptie (696 MB /s).

Cloudflare heeft patches uitgebracht die de schijfversleuteling aanzienlijk versnellen. Linux

Cloudflare heeft patches uitgebracht die de schijfversleuteling aanzienlijk versnellen. Linux

Cloudflare heeft patches uitgebracht die de schijfversleuteling aanzienlijk versnellen. Linux

При тестировании нагрузки на реальных серверах новая реализация показала производительность очень близкую к конфигурации, работающей без шифрования, а включение шифрования на серверах с кэшем Cloudflare никак не повлияло на скорость отклика. В дальнейшем Cloudflare планирует передать подготовленные патчи в состав основного ядра Linux, но перед этим их потребуется переработать, так как они оптимизированы для определённой нагрузки и не охватывают все области применения, например, шифрования на маломощных встраиваемых устройствах.

Cloudflare heeft patches uitgebracht die de schijfversleuteling aanzienlijk versnellen. Linux

Bron: opennet.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster