hi
je čas strávený zpracováním hardwarových přerušení. Hardwarová přerušení generují hardwarová zařízení (síťové karty, řadič klávesnice, externí časovač, hardwarové senzory, ...), když potřebují něco signalizovat CPU (například dorazila data).
Protože se to může stát velmi často a protože v podstatě blokují aktuální CPU, když běží, jsou hardwarové ovladače přerušení jádra napsány tak, aby byly co nejrychlejší a nejjednodušší.
Pokud je třeba provést dlouhé nebo složité zpracování, jsou tyto úkoly odloženy pomocí volání mechanismu softirqs
. Ty jsou plánovány nezávisle, mohou běžet na libovolném CPU, mohou dokonce běžet souběžně (nic z toho neplatí o obslužných rutinách hardwarových přerušení).
Část o pevných IRQ blokujících aktuální CPU a část o softirqs
schopnost spouštět kdekoli nejsou přesně správné, mohou existovat omezení a některá tvrdá IRQ mohou rušit ostatní.
Například hardwarové přerušení "přijatá data" ze síťové karty může jednoduše někde uložit informaci "karta ethX potřebuje servis" a naplánovat softirq
. softirq
by byla věc, která spouští skutečné směrování paketů.
si
představuje čas strávený v těchto softirqs
.
Dobré čtení o softirq
mechanismus (i s trochou historie) je Matthew Wilcox I'll Do It Later:Softirqs, Tasklets, Bottom Halfes, Task Queues, Work Queues and Timers (PDF, 64k).
st
, "ukrást čas", je relevantní pouze ve virtualizovaných prostředích. Představuje dobu, kdy skutečný procesor nebyl dostupný aktuálnímu virtuálnímu počítači — byl z tohoto virtuálního počítače „ukraden“ hypervizorem (buď za účelem spuštění jiného virtuálního počítače, nebo pro jeho vlastní potřeby).
Dokument účtování času CPU od IBM obsahuje více informací o krádeži času a účtování CPU ve virtualizovaných prostředích. (Je zaměřen na hardware typu zSeries, ale obecná myšlenka je pro většinu platforem stejná.)
- nás – Čas strávený v uživatelském prostoru
- sy – Čas strávený v prostoru jádra
- ni – Čas strávený spouštěním pěkných uživatelských procesů (Priorita definovaná uživatelem)
- id – čas strávený nečinnými operacemi
- wa – Čas strávený čekáním na periferních zařízeních IO (např. disk)
- ahoj – čas strávený manipulací s rutinami hardwarových přerušení. (Kdykoli chce periferní jednotka pozornost od CPU, doslova zatáhne za linku, aby dala CPU signál, aby ji provedl)
- si – Čas strávený zpracováním procedur softwarového přerušení. (kousek kódu, volá rutinu přerušení...)
- st – Čas strávený nedobrovolným čekáním virtuálního procesoru, zatímco hypervizor obsluhuje jiný procesor (ukradený z virtuálního počítače)
Hodnotu "st" lze jednoduše vysvětlit pomocí instance T2.micro EC2 od AWS.
V dokumentaci AWS si můžete přečíst, že získáte pouze 10% základní výkon na VCPU. To znamená, že pokud máte proces, který by spotřeboval hodně času procesoru, hodnota „st“ zůstane kolem 90, protože můžete používat pouze 10 % VCPU. Součet ostatních hodnot zůstane kolem 10.
AWS tedy používá hypervizor, aby vám umožnil přístup pouze k určitému množství výpočetního výkonu. Záměrně vás to zpomaluje, protože používáte pouze typ instance nízké úrovně.
Doufám, že to trochu usnadní pochopení věcí.