it-swarm-ru.tech

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

Когда я выдаю top в Linux, я получаю результат, подобный следующему:

Screenshot of top

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

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
206
its_me

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

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

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

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

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

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

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

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

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

96
Mat
  • нас - Время, проведенное в пространстве пользователя
  • sy - время, проведенное в пространстве ядра
  • ni - время, затраченное на выполнение пользовательских процессов с ограничениями (пользовательский приоритет)
  • id - время, проведенное в режиме ожидания
  • wa - время, потраченное на ожидание на IO периферийные устройства (например, диск)
  • привет - Время, потраченное на обработку процедур аппаратного прерывания. (Всякий раз, когда периферийное устройство хочет внимания от процессора, оно буквально тянет линию, чтобы сигнализировать процессору об обслуживании)
  • si - время, потраченное на обработку программных прерываний. (фрагмент кода вызывает подпрограмму прерывания ...)
  • st - Время, затрачиваемое на принудительное ожидание виртуальным процессором, пока гипервизор обслуживает другой процессор (украденный с виртуальной машины)
20
Simon Rigét

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

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

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

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

2
draufunddran