Команда "верхній" Linux: Що ми, 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і т.д., тому що це може допомогти іншим , які шукають те ж саме. Цієї інформації немає на сторінках "man".

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 можуть перебивати інші.

Наприклад, апаратне переривання апаратної перерви від мережевої картки може просто зберігати інформацію, яку "десь потрібно обслуговувати" softirq. Це softirqбуде те, що запускає фактичну маршрутизацію пакету.

siпредставляє витрачений у них час softirqs.

Добре читайте про softirqмеханізм (з трішки історії) - це Меттью Вілкокс, який я зроблю це пізніше: Softirqs, Tasklets, Bottom Halves, Task Queues, Work Queues and Timers (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 використовує гіпервізор, щоб лише дозволити вам отримати доступ до певної кількості обчислювальної потужності. Це сповільнює вас за наміром, оскільки ви використовуєте лише екземпляр низького рівня.

Я сподіваюся, що це полегшує розуміння речей.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.