В * nix, что вызывает «сон» в верхней команде? - PullRequest
15 голосов
/ 04 октября 2010

Что вызывает эти sleeping процессы, которые я вижу в top?Если бы я вызывал функцию PHP sleep(), добавило бы это к счету sleeping, который я вижу в top?Есть ли какие-либо недостатки, связанные с большим числом в sleeping?

Ответы [ 4 ]

19 голосов
/ 04 октября 2010

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

sleep() действительно является одним из способов приостановить процесс на некоторое время.Спящий режим, однако, является нормальным состоянием всех процессов, кроме сильно связанных с вычислениями. Спящий режим - это, по сути, процесс, который больше ничего не делает.Это нормальное состояние для большинства ваших процессов, когда они спят - если это , а не , это означает, что вам нужно больше мощности процессора.

9 голосов
/ 04 октября 2010

Спящий процесс подобен приостановленному процессу. Процесс спит, когда:

  1. Выполняет операцию ввода / вывода (блокирует ввод / вывод)
  2. Когда вы приказываете спать сном ()

Статус любого процесса может быть:

  • Готов: когда он готов к выполнению и находится в очереди, ожидая вызова процессора с определенным приоритетом
  • Спящий режим: когда он работал и был заблокирован для операции ввода-вывода или при выполнении режима сна ()
  • Выполнение: когда процессор выполняет процесс, он становится запущенным.

Статус Значение

  • R Работоспособен

  • T остановлен

  • P Ожидание на странице

  • D Ожидание ввода / вывода

  • S Спящий <20 секунд </p>

  • В простое - сплю> 20 секунд

  • Z Zombie или несуществующий

2 голосов
/ 14 сентября 2013

Для более подробной информации здесь, состояние S означает, что процесс ожидает на таймере или медленном устройстве, а состояние D означает, что оно ожидает на быстром устройстве.

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

2 голосов
/ 04 октября 2010

Это процессы, которые не выполняются на процессоре сейчас . Это не обязательно плохо.

Если у вас огромное количество (например, 10 000 в серверной системе) спящих процессов, объем памяти и т. Д., Используемый для их отслеживания, может сделать систему менее эффективной для не спящих процессов.

В остальном все нормально.

Большинство обычных серверных систем большую часть времени работают от 100 до 1000; это не имеет большого значения.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...