Как я диагностирую дисковую IO проблему производительности, возможно связанную с dm-crypt/LUKS?

Проблема

Я недавно установил Ubuntu 16.04 LTS (ядро 4.8.0-52) на Lenovo T460p с i7-6820HQ, 32 ГБ RAM и SSD Микрона 1100 на 512 ГБ. Я установил флажок полного шифрования диска во время установки и использовал расположение разделения значения по умолчанию. В целом производительность является большой.

Однако со временем мои сборки начинали выполнять вдвое более долгое сопровождение. Далее, во время частей сборки, которые пишут большие файлы любой (несборка) задача, которая требует диска, ввод-вывод заканчивает тем, что ожидал много. Это включает запускающиеся новые программы, загружая страницы в Firefox, и т.д. В Firefox, например, я могу переместиться по UI, вкладкам переключателя, и все прекрасно. Но если я перехожу по ссылке, целые блокировки UI вплоть до вещей успокаиваются.

Так, таким образом, после некоторого промежутка времени, сборки внезапно занимают больше времени, и в определенные моменты во время сборки компьютер в основном неприменим.

Что я могу сделать, чтобы попытаться диагностировать или решить этот вопрос?

Поиск и устранение неисправностей информации

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

  • Единственная вещь, которая решает вопрос, перезагружает машину. Я попытался выйти из всех приложений, выйдя из системы и въезжаю задним ходом, и отбрасывание кэш-буфера (теория цепа, что, поскольку это использовало дисковые синхронизации пространства памяти, происходили более часто), но только перезагружали работы.

  • Как съемка общим планом, я попробовал решение этого ответа, но в поведении не было никакого изменения.

  • Выполнение iotop шоу dmcrypt_write поток с помощью 99%-го ввода-вывода каждый раз, когда я испытываю проблемы. Когда я не испытываю проблему, я также вижу dmcrypt_write появитесь к вершине с относительно высоким % IO, но это не остается там очень длинным.

  • Если я работаю dd if=/dev/urandom of=$HOME/bigfile bs=10k count=200k; sync когда вещи работают обычно, dmcrypt_write перейдет к вершине в течение секунды или два, но это не где около той же продолжительности как во время одной из моих сборок.

  • Полная сборка генерирует приблизительно 1,4 ГБ данных. Это - проект Java с несколькими модулями. Так, много небольших файлов создается плюс некоторые большие файлы JAR что агрегат все те небольшие файлы.

  • Всегда существует много доступной памяти, и раздел подкачки не используется.

  • У меня есть коллеги с подобными компьютерами (T460p) также под управлением Ubuntu, которые не испытывают эту проблему. Они у них всех, кажется, есть другой вид/модели SSD, все же.

Обновление

Проблема просто появилась снова, таким образом, я сделал еще некоторое тестирование на основе ответа на этот вопрос.

  • Файловая система все еще не смонтирована с discard опция, таким образом, я вместо этого работал fstrim принятие, которое было бы несколько подобно тому, что имело discard опция включена
  • Я не сделал достаточной синхронизации, когда проблема сначала произошла, но после выполнения fstrim, скорости сборки, казалось, вернулись к нормальному..., но после того, как сборка завершается, dmcrypt_write поток вталкивает и делает систему неприменимой сроком на время. Все и все общее время для создания и чтобы система стала применимой, кажется, о том же как прежде.
  • Я изменился /proc/sys/vm/dirty_ratio к 2 и /proc/sys/vm/dirty_background_ratio к 1 и выполнил некоторые сборки. Сборки заняли больше времени, чем нормальный — о том же как прошлый раз, когда я поразил эту проблему, но система, казалось, не заперлась так же. Возврат его к 20 и 10 вернулся к упомянутому выше поведению.
  • На чистить ботинке я пытался установить /proc/sys/vm/dirty_ratio к 2 и /proc/sys/vm/dirty_background_ratio к 1 и время было сопоставимо с ним в 20 и 10.
7
задан 1 June 2017 в 14:38

2 ответа

Не знайте о LUKS а именно, но для общих проблем IO о SSD удостоверяются, что отбрасывание идет в течение Вашей фс, монтируются, т.е. grep отбрасывают/proc/mounts, также мог бы попробовать (как корень), "отзываются эхом 1>>/proc/sys/vm/dirty_background_ratio; отзовитесь эхом 2>>/proc/sys/vm/dirty_ratio", это заставит систему инициировать IO раньше, когда будет меньше заднего журнала данных для выписывания.

1
ответ дан 23 November 2019 в 06:55

У меня точно такая же проблема, как у вас, и быстрое исследование показало этот пост:

https://blog.cloudflare.com/speeding-up-linux-disk -encryption

Сотрудник CloudFlare изрядно покопался в исходном коде Linux и пришел к выводу, что виновником является текущая реализация dmcrypt. Он решил проблему, фактически переписав соответствующую часть ядра.

Таким образом, насколько я знаю, есть только два способа избавиться от замедлений: (1) скомпилировать его версию ядра или (2) время от времени перезагружаться (как вы сказали). Я выбрал последнее.

2
ответ дан 19 November 2020 в 08:14

Другие вопросы по тегам:

Похожие вопросы: