В * nix, что вызывает "спать" в верхней команде?

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

Ответы

Ответ 1

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

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

Ответ 2

Спящий процесс похож на приостановленный процесс. Процесс засыпает, когда:

  • Выполнение операции ввода-вывода (блокировка ввода-вывода)
  • Когда вы заказываете его для сна сна()

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

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

Состояние Значение

  • R Runnable

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

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

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

  • S Sleeping < 20 секунд

  • I Idle - sleep > 20 секунд

  • Z Зомби или несуществующий

Ответ 3

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

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

В противном случае это нормально.

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

Просто потому, что они ничего не делают сейчас, это не значит, что они не будут, очень скоро. Сохраняя их в памяти, готово, сокращает время ожидания, когда они требуются.

Ответ 4

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

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