Linux "top" команда: что мы используем, sy, ni, id, wa, hi, si и st (для использования процессора)?

195

Когда я выпускаю topв Linux, я получаю результат, похожий на этот:

Скриншот сверху

Одна из строк имеет информацию об использовании процессора, представленную следующим образом:

Cpu(s): 87.3%us,  1.2%sy,  0.0%ni, 27.6%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

Хотя я знаю определения каждого из них (гораздо ниже), я не понимаю, что именно означают эти задачи.

  • hi - что означает обслуживание аппаратных прерываний?
  • si - что означает обслуживание программных прерываний?
  • st - говорят, что это «время ЦП в вынужденном ожидании виртуального ЦП, пока гипервизор обслуживает другой процессор (или)% времени ЦП, украденного с виртуальной машины».

Но что это на самом деле означает? Кто-то может быть более ясным?

Я перечислил все us, sy, niи т.д., потому что это может помочь другим , которые ищут то же самое. Этой информации нет в справочных страницах.

us: user cpu time (or) % CPU time spent in user space
sy: system cpu time (or) % CPU time spent in kernel space
ni: user nice cpu time (or) % CPU time spent on low priority processes
id: idle cpu time (or) % CPU time spent idle
wa: io wait cpu time (or) % CPU time spent in wait (on disk)
hi: hardware irq (or) % CPU time spent servicing/handling hardware interrupts
si: software irq (or) % CPU time spent servicing/handling software interrupts
st: steal time - - % CPU time in involuntary wait by virtual cpu while hypervisor is servicing another processor (or) % CPU time stolen from a virtual machine
это я
источник

Ответы:

92

hiвремя, потраченное на обработку аппаратных прерываний. Аппаратные прерывания генерируются аппаратными устройствами (сетевыми картами, контроллером клавиатуры, внешним таймером, аппаратными датчиками и т. Д.), Когда им нужно что-то сигнализировать ЦПУ (например, поступили данные).

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

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

Часть о жестких IRQ, блокирующих текущий процессор, и часть о softirqsвозможности работать в любом месте не совсем корректны, могут быть ограничения, и некоторые жесткие IRQ могут прерывать другие.

Например, аппаратное прерывание «полученные данные» от сетевой карты может просто хранить информацию о том, что «карту ethX нужно обслуживать» где-то и планировать softirq. Это softirqбыло бы то, что запускает фактическую маршрутизацию пакетов.

siпредставляет время, проведенное в них softirqs.

Хорошее прочтение о softirqмеханизме (с небольшим количеством истории) - книга Мэтью Уилкокса « Я сделаю это позже»: Softirqs, Tasklets, Bottom Halves, очереди задач, рабочие очереди и таймеры (PDF, 64k).

st«Время кражи» относится только к виртуализированным средам. Он представляет время, когда реальный ЦП не был доступен для текущей виртуальной машины - он был «украден» с этой ВМ гипервизором (либо для запуска другой ВМ, либо для собственных нужд).

Процессорное время бухгалтерский документ от IBM имеет больше информации о крадет время и учет процессора в виртуализированных средах. (Он предназначен для аппаратного обеспечения типа zSeries, но общая идея одинакова для большинства платформ.)

Мат
источник
очень ясно. Итак, если я подключу новую звуковую систему, гарнитуру и т. Д. (Любое оборудование в этом отношении), это также вызовет аппаратное прерывание, верно?
its_me
2
Да, это может быть способом для вашего звукового чипсета сигнализировать, что «что-то случилось». Но подключение гарнитуры может быть полностью решено самим звуковым чипом (например, перенаправить вывод звука с основного выхода на наушники), поэтому он может не генерировать прерывание для основного процессора. Однако нажатие клавиши на клавиатуре вызовет прерывания (с вашего USB-концентратора, если у вас есть USB-клавиатура). Смотрите также cat /proc/interrupts(человек man procдля док. Об этом файле).
Мат
15
  • нас - Время, проведенное в пространстве пользователя
  • sy - время, проведенное в пространстве ядра
  • ni - время, затраченное на выполнение пользовательских процессов с ограничениями (пользовательский приоритет)
  • id - время, проведенное в режиме ожидания
  • wa - время, потраченное на ожидание на периферийных устройствах ввода-вывода (например, на диске)
  • привет - Время, потраченное на обработку процедур аппаратного прерывания. (Всякий раз, когда периферийное устройство хочет внимания от процессора, оно буквально тянет линию, чтобы сигнализировать процессору об обслуживании)
  • si - время, потраченное на обработку программных прерываний. (фрагмент кода вызывает подпрограмму прерывания ...)
  • st - Время, затрачиваемое на принудительное ожидание виртуальным процессором, пока гипервизор обслуживает другой процессор (украденный с виртуальной машины)
Саймон Ригет
источник
2

Значение "st" может быть просто объяснено с помощью экземпляра T2.micro EC2 от AWS.

В документации AWS вы можете прочитать, что вы получаете только 10% базовой производительности на VCPU. Это означает, что если у вас есть процесс, который потребляет много процессорного времени, значение «st» останется около 90, поскольку вам разрешено использовать только 10% VCPU. Сумма других значений останется около 10.

Таким образом, AWS использует гипервизор, чтобы предоставить вам доступ только к определенной вычислительной мощности. Это замедляет вас намеренно, так как вы используете только низкоуровневый тип экземпляра.

Я надеюсь, что это немного облегчает понимание.

draufunddran
источник