В * nix, что вызывает "спать" в верхней команде?
Что вызывает эти процессы sleeping
, которые я вижу в top
? Если бы я должен был вызвать функцию PHP sleep()
, добавил бы к счету sleeping
, который я вижу в top
? Есть ли недостатки в наличии большого числа в sleeping
?
Ответы
Ответ 1
Процесс спящий, когда он заблокирован, ждет чего-то. Например, он мог бы вызвать read()
и ожидает, когда данные поступят из сетевого потока.
sleep()
- это действительно один из способов мгновенного спящего процесса. Однако спать - это нормальное состояние всех процессов, кроме процессов с высокой вычислительной способностью. Сон - это, по сути, процесс, когда он ничего не делает. Это нормальное состояние дел для большинства ваших процессов, чтобы спать - если это не так, это имеет тенденцию указывать, что вам нужно больше мощности процессора.
Ответ 2
Спящий процесс похож на приостановленный процесс.
Процесс засыпает, когда:
- Выполнение операции ввода-вывода (блокировка ввода-вывода)
- Когда вы заказываете его для сна сна()
Состояние любого процесса может быть:
- Готов: когда он готов к выполнению и он в очереди ожидает вызова процессора с определенным приоритетом
- Спящий режим: при запуске и блокировке операции ввода-вывода или при выполнении sleep()
- Выполнение: Когда процессор выполняет процесс, он запускается.
Состояние Значение
Ответ 3
Это процессы, которые сейчас не работают на процессоре. Это не обязательно плохо.
Если у вас есть огромные числа (например, 10000 в серверной системе) процессов, то количество памяти и т.д., используемое для отслеживания их, может сделать систему менее эффективной для процессов без сна.
В противном случае это нормально.
Большинство нормальных серверных систем часто имеют от 100 до 1000; это не большая проблема.
Просто потому, что они ничего не делают сейчас, это не значит, что они не будут, очень скоро. Сохраняя их в памяти, готово, сокращает время ожидания, когда они требуются.
Ответ 4
Для более подробного ознакомления здесь состояние S
означает, что процесс ожидает по таймеру или медленному устройству, а состояние D
означает, что он ждет на быстром устройстве.
Что представляет собой быстрое устройство и медленное устройство, не очень четко определено, но, как правило, все последовательные, сетевые и терминальные устройства являются медленными устройствами, а диски - быстрыми устройствами.