Необычные прыжки/паузы/задержки устойчивой пропускной способности с LUKS и неожиданные обходные решения

Вопрос или проблема

У меня есть проблема: зашифрованные тома на вращающихся дисках ведут себя странно при длительных последовательных операциях (например, запись нескольких ТБ на свежесформатированную файловую систему EXT4). Произведенный объем значительно колеблется выше и ниже устойчивой пропускной способности базового устройства, и это повторяется на протяжении всей передачи.

Комбинация LVM + LUKS (в отличие от просто LUKS) усугубляет эту проблему, и в этой ситуации пропускная способность превышает устойчивую пропускную способность диска (в 2-3 раза), а затем падает до 0. Это происходит постоянно.

Я нашел статью CloudFlare, где они говорят о очередности ввода-вывода в комбинации SSD и dm-crypt. Насколько я понимаю, работающие очереди dm-crypt вызывают ухудшение производительности с SSD, так как работающие очереди должны гарантировать, что асинхронное шифрование/дешифрование не изменяет результирующий порядок ввода-вывода, и это не имеет значения для SSD, поскольку SSD не заботится о порядке ввода-вывода, а работающие очереди только добавляют дополнительную нагрузку без необходимости. Однако на вращающемся диске измененный порядок может потенциально преобразовать последовательный ввод-вывод в полупроизвольный, и это плохо для вращающегося диска, так как большее количество перемещений не способствует производительности (или работе диска).

Тем не менее, я попробовал этот обходной путь в обоих приведенных случаях:

cryptsetup --perf-no_read_workqueue --perf-no_write_workqueue --persistent refresh <NAME>

Этот обходной путь устранил постоянные колебания пропускной способности, и устойчивое последовательное выполнение даже увеличилось на вращающихся дисках…

Я провел более контролируемую запись нескольких ТБ на EXT4 -> LUKS -> HDD, и результат показал, что включенные рабочие очереди приводят к колебаниям пропускной способности, а отключение рабочих очередей вызывает увеличение последовательной пропускной способности примерно на 10%, причём пропускная способность становится постоянной, и это ожидаемый максимум для данного диска. В основном отключение этих рабочих очередей заставляет диск вести себя так, как если бы он работал без dm-crypt/LUKS.

Поскольку это должно иметь противоположный эффект, как это вообще может работать? Случайный ввод-вывод (= больше перемещений) увеличивает последовательную производительность на вращающемся диске? Это воспроизводимо на двух разных системах (Ubuntu, Debian), с различной конфигурацией LUKS или LUKS@LVM и разными вращающимися дисками.

Отключение рабочих очередей для вращающихся дисков, похоже, работает очень хорошо, даже слишком хорошо, но это не должно работать вообще! Что я упускаю? Есть ли более подходящее решение проблемы с колебаниями пропускной способности (без отключения рабочих очередей dm-crypt)?

Ответ или решение

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

Причины скачков производительности

  1. Свойства жестких дисков: В отличие от SSD, жесткие диски имеют механическую часть, и их производительность сильно зависит от последовательного чтения и записи данных. При случайном доступе производительность может существенно упасть из-за времени, затрачиваемого на перемещение головки привода.

  2. Рабочие очереди dm-crypt: Как вы правильно заметили, dm-crypt использует рабочие очереди для обеспечения порядка операций ввода-вывода. Это может увеличить задержки для операций записи на жесткие диски, поскольку операции могут переставляться, что приводит к более частым перемещениям головок и большим затратам времени.

Анализ вашего workaround’а

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

Почему это может работать

  • Потеря производительности от механического перемещения: Отключение рабочих очередей может уменьшить количество перемещений головки диска, так как операции записи выполняются в том же порядке, в котором они поступают. Это приводит к уменьшению случайных операций и обеспечивает более высокую общую устойчивую пропускную способность.

  • Упрощение процесса: Без дополнительных накладных расходов на управление рабочими очередями диск может быстрее выполнять заданные операции, что, как вы заметили, приводит к более предсказуемой производительности.

Рекомендации по улучшению

  1. Использование других файловых систем: Рассмотрите возможность использования других файловых систем, таких как XFS или Btrfs, которые могут лучше справляться с большими объемами данных и иметь более высокую производительность на жестких дисках.

  2. Оптимизация параметров dm-crypt: Если вы не хотите отключать рабочие очереди, вы можете поэкспериментировать с другими параметрами (например, --cipher, --hash и другими), которые могут снизить нагрузку на систему.

  3. Мониторинг состояния диска: Проведите мониторинг состояния диска (например, с помощью smartctl), чтобы убедиться, что нет аппаратных проблем, которые могут вызывать скачки производительности.

  4. Тестирование на разных системах или конфигурациях: Поскольку вы столкнулись с этой проблемой на разных системах, полезно протестировать конфигурации с другими версиями ядер, LVM и LUKS, чтобы увидеть, есть ли различия в поведении.

  5. Обновление программного обеспечения: Убедитесь, что у вас установлено последние обновления для системного программного обеспечения, поскольку каждое обновление может содержать важные улучшения, касающиеся производительности.

Заключение

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

Оцените материал
Добавить комментарий

Капча загружается...