Огромное, непредсказуемое падение производительности ввода-вывода в Linux

Огромное, непредсказуемое падение производительности ввода-вывода в Linux

Я использую Debian Testing без каких-либо проблем уже около 6 лет (просто регулярно обновляю его), но недавно он начал демонстрировать случайное поведение, которое можно охарактеризовать как «Низкая производительность ввода-вывода, которая сохраняется до перезагрузки».

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

Подсистема ввода-вывода компьютера состоит из одного твердотельного накопителя OCZ Vertex 3 и двух жестких дисков WD Caviar Black. На твердотельном накопителе хранится часть ОС, требующая интенсивного чтения, а раздел на жестком диске — остальная часть.

Чтобы диагностировать проблему, я попробовал следующее, но безуспешно:

  • topне показывает никакой неконтролируемой активности ни в использовании ЦП, ни в использовании ввода-вывода.
  • hdparmвозвращает нормальные оценки производительности дисков ( -tхотя я только проверил).
  • smartctlне показывает никаких проблем с производительностью дисков. Длительные тесты показали, что диски как новые.

Система имеет чипсет Z77, 16 ГБ ОЗУ и процессор Intel i7 3770K, и статистика не показывает признаков насыщения ОЗУ, ввода-вывода или процессора, но у меня нет опыта отладки таких проблем (особенно в пространстве ядра). Любая помощь будет оценена по достоинству.

Обновление 1:

  • Я запустил (принудительно) fsck на каждом разделе в качестве меры предосторожности. Все ФС чистые.
  • Случайно я нашел обновление BIOS, которое вышло месяц назад, и применил его.
  • Ни один раздел не заполнен более чем на 50%.

Обновление 2:

Проблема не всплывает уже два дня. Либо fsckобновление BIOS очистило некоторые засоры в системе. Я все еще слежу за проблемой и закрою вопрос с ответом после смерти.

Обновление 3:

Проблема только что снова всплыла, и я покопался еще. Пожалуйста, посмотрите ответ.

решение1

Мне удалось воспроизвести проблему снова, и это было результатом большого дискового кэша. Мои дисковые кэши могут вырасти более чем на 8 ГБ, и, похоже, некоторым приложениям это не нравится, и I/O страдает.

Удаление дисковых кэшей с echo 3 > /proc/sys/vm/drop_cachesправами root решает проблему. В настоящее время я не знаю, почему большие дисковые кэши вызывают эту деградацию ввода-вывода.

Последнее обновление:После более тщательного расследования я выяснил, что причиной проблемы было количество файлов в кэше. Он засорял диски при попытке зафиксировать много маленьких файлов обратно на диск. Поскольку я пользовался системой десять лет, я решился и переустановил ее на 64-битный Debian. Теперь все работает гладко. Вероятно, это был побочный эффект десяти лет обновлений с обнаружением ограничений 32-битной операционной системы.

решение2

Есть ли какие-либо подозрительные сообщения в dmesg?

Еще несколько инструментов, которые вы можете попробовать использовать, чтобы получить представление об узких местах вашей системы:

  • дстат
  • задержкатоп
  • сиспроф

Связанный контент