Я недавно установил 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.Не знайте о LUKS а именно, но для общих проблем IO о SSD удостоверяются, что отбрасывание идет в течение Вашей фс, монтируются, т.е. grep отбрасывают/proc/mounts, также мог бы попробовать (как корень), "отзываются эхом 1>>/proc/sys/vm/dirty_background_ratio; отзовитесь эхом 2>>/proc/sys/vm/dirty_ratio", это заставит систему инициировать IO раньше, когда будет меньше заднего журнала данных для выписывания.
У меня точно такая же проблема, как у вас, и быстрое исследование показало этот пост:
https://blog.cloudflare.com/speeding-up-linux-disk -encryption
Сотрудник CloudFlare изрядно покопался в исходном коде Linux и пришел к выводу, что виновником является текущая реализация dmcrypt
. Он решил проблему, фактически переписав соответствующую часть ядра.
Таким образом, насколько я знаю, есть только два способа избавиться от замедлений: (1) скомпилировать его версию ядра или (2) время от времени перезагружаться (как вы сказали). Я выбрал последнее.