Разработчики Cloudflare работают над исправлениями для ускорения шифрования диска в Linux

Cloudflare

серия Разработчики Cloudflare выпустили информация о работе, которую они проводят по оптимизации производительности шифрования диска в ядре Linux, о которой они упоминают, что подготовили патчи для подсистем dm-crypt и Crypto API.

С этим, синтетический тест позволил удвоить пропускную способность для чтения и записи, а также уменьшить задержку вдвое. При тестировании на реальных машинах накладные расходы на шифрование были снижены почти до уровня, наблюдаемого при работе с диском без использования шифрования данных.

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

Чтобы оценить производительность dm-crypt с использованием пакета гибких тестов ввода-вывода, се измерил скорость работы с зашифрованными разделами и не зашифрованы на RAM-диске, расположенном в RAM, чтобы исключить колебания производительности диска.

Для незашифрованных разделов скорость чтения и записи оставалась на уровне 1126 МБ / с, но когда шифрование было включено, скорость упала в 7 раз до 147 МБ / с.

В начале, подозревалось использование неэффективных алгоритмов в криптографической системе ядра. Но в тестах использовался более быстрый алгоритм aes-xts с 256 ключами шифрования, производительность которого при запуске «cryptsetup benchmark» более чем в два раза выше результата, полученного при тестировании RAM-диска.

ая-крипта

Эксперименты с флагами dm-crypt настроить производительность не получилось: Когда использовался флаг –perf-same_cpu_crypt, производительность даже снижалась до 136 МБ / с, а при использовании флага –perf-submit_from_crypt_cpus она увеличивалась только до 166 МБ / с.

Более глубокий анализ логики работы показал, что dm-crypt не так прост как это выглядит.

Когда от контроллера FS поступает запрос на запись, dm-crypt не обрабатывает его немедленно, а помещает его в очередь «kcryptd», которая не сразу понимается, но когда наступает подходящий момент. Из очереди запрос отправляется в Linux Crypto API для шифрования.

При первом чтении очереди dm-crypt "kcryptd_io" запрос на получение данных от объекта. После какое-то время данные доступны и они помещены в очередь «kcryptd» для расшифровки.

Kcryptd отправляет запрос к Linux Encryption API, который асинхронно расшифровывает информацию. Запросы не всегда проходят через все очереди, но в худшем случае запрос на запись выставляется на очереди до 4 раз и запрос на чтение до 3 раз. Каждое попадание в хвост ведет к задержкам, которые являются ключевой причиной значительного снижения производительности dm-crypt.

Учитывая, что современные накопители стали быстрее и умнее, система распределения ресурсов в ядре Linux была пересмотрена и некоторые подсистемы были переработаны, Инженеры Cloudflare добавили в dm-crypt новый режим работы, исключающий использование дополнительных очередей и асинхронных вызовов.

Режим включается отдельным флагом force_inline и превращает dm-crypt в форму простого прокси, который шифрует и дешифрует входящие запросы. Взаимодействие с Crypto API оптимизировано за счет явного выбора алгоритмов шифрования. Они работают в синхронном режиме и не используют очереди запросов.

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

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

источник: https://blog.cloudflare.com


Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Будьте первым, чтобы комментировать

Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: Мигель Анхель Гатон
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.