Как я могу остановить зависание Ubuntu из-за процессов, переходящих в спящий режим?

7233
joeforker

Я использую Ubuntu 9.04 64 бит на AMD. Он регулярно зависает на несколько минут в то время, когда некоторые из используемых ЦП процессов% переходят в «спящий режим». В течение этого времени я не могу запускать новые программы, и большинство программ на рабочем столе перестают отвечать на запросы.

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

5
Я видел такое поведение с процессами, обращающимися к смонтированным файловым системам, главным образом NFS. Есть ли в системе какие-либо крепления для NFS, Samba, USB? nagul 14 лет назад 0
У меня есть пара креплений CIFS и раздел webdav. Может быть проблема. Могу ли я заставить их уйти, когда они недоступны, вместо того, чтобы зависать? joeforker 14 лет назад 0
Проблема в том, что они периодически недоступны из-за задержек в сети или из-за проблем с драйверами. По моему опыту CIFS, NFS склонны к такому поведению. Будет ли решение приемлемым, если по умолчанию они отключены, а вы монтируете их при необходимости? nagul 14 лет назад 0

1 ответ на вопрос

7
nagul

Процесс в режиме ожидания диска или непрерывного режима ожидания обычно ожидает завершения операции ввода-вывода. В этом состоянии его нельзя разбудить сигналами, поэтому процесс не может быть остановлен с помощью сигнала SIGKILL.

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

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

Процессы, которые планируются из-за # 2, также указывают планировщику, должны ли они быть прерваны или нет, пока они ожидают события. Если они не могут продолжить надлежащую работу, если их прерывает сигнал (обычно это драйверы устройств), они указывают, что они должны быть разбужены только событием. Они находятся в режиме непрерывного сна и будут перемещены в очередь ожидания.

Если вы испытываете регулярное зависание системы из-за неактивности диска, это может быть одним из

  • Багги драйвер устройства
  • Неисправности на вашем оборудовании (Дисковод?)
  • Монтируемые файловые системы медленно реагируют.

Я видел это снова и снова с файловыми системами NFS. Если по какой-либо причине отклик устройства будет потерян, процесс останется в спящем режиме, что сделает практически невозможным использование устройства / устройства до перезагрузки.

Если вы считаете, что доступ к жесткому диску приводит к зависанию ввода-вывода, возможно, было бы целесообразно проверить, есть ли на диске поврежденные блоки или сектора.