it-swarm-eu.dev

Linux "top" příkaz: Co jsme my, sy, ni, id, wa, ahoj, si a st (pro využití CPU)?

Když v Linuxu vydám top, dostanu výsledek podobný tomuto:

Screenshot of top

Jeden z řádků obsahuje informace o využití CPU takto:

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

I když znám definice každého z nich (daleko níže), nechápu, co tyto úkoly přesně znamenají.

  • hi - co znamená přerušení servisního hardwaru?
  • si - co znamená přerušení servisního softwaru?
  • st - říkají, že je to „čas CPU v nedobrovolném čekání virtuálního CPU, zatímco hypervisor obsluhuje jiný procesor (nebo)% času CPU ukradeného z virtuálního počítače“.

Co to vlastně znamená? Může někdo být jasnější?

Uvedl jsem všechny us, sy, ni atd., Protože by to mohlo ostatním pomoci hledat to samé. Tato informace není na manuálových stránkách.

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 je čas strávený přerušením zpracování hardwaru. Hardwarová přerušení jsou generována hardwarovými zařízeními (síťové karty, řadič klávesnice, externí časovač, hardwarové senzory, ...), když potřebují něco signalizovat do procesoru (například data dorazila).

Protože k tomu může dojít velmi často a protože v podstatě blokují aktuální CPU, zatímco jsou spuštěny, jsou popisovače hardwarového přerušení jádra psány tak rychle, jak je to jen možné.

Pokud je třeba provést dlouhé nebo složité zpracování, jsou tyto úkoly odloženy pomocí mechanického volání softirqs. Jsou naplánovány nezávisle, mohou běžet na jakémkoli CPU, mohou běžet souběžně (nic z toho neplatí pro popisovače přerušení hardwaru).

Část o tvrdých IRQ blokujících aktuální procesor a část o tom, že softirqs budou moci běžet kdekoli, nejsou úplně správné, mohou existovat omezení a některé tvrdé IRQ mohou přerušit jiné.

Jako příklad lze uvést, že hardwarové přerušení ze síťové karty „přijatá data“ by mohlo jednoduše uložit informace „karta ethX musí být obsluhována“ 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 mechanismu softirq (s trochou historie) je také dělám to později: Softirqs, Tasklets, dolní poloviny, fronty úkolů, pracovní fronty a časovače = (PDF, 64 kB).

st, „ukrást čas“, je relevantní pouze ve virtualizovaných prostředích. Představuje čas, kdy skutečný procesor nebyl k dispozici aktuálnímu virtuálnímu počítači - byl „odcizen“ z toho VM) hypervizorem (buď pro spuštění jiného VM, nebo pro vlastní potřeby).

Dokument CPU time Accounting od IBM obsahuje více informací o krádeži času a účetnictví CPU ve virtualizovaných prostředích. (Zaměřuje se na hardware typu zSeries, ale obecná myšlenka je stejná pro většinu platforem.)

96
Mat
  • us - Čas strávený v uživatelském prostoru
  • sy - Čas strávený v jaderném prostoru
  • ni - Čas strávený spuštěním hezkých uživatelských procesů (Uživatelem definovaná priorita)
  • id - Čas strávený v nečinnosti
  • wa - Čas strávený čekáním na IO periferie (např. disk))
  • hi - Čas strávený zpracováním rutin hardwarového přerušení. (Kdykoli periferní jednotka chce pozornost od CPU, doslova vytáhne linku, aby signalizovala CPU, aby ji obsluhovala)
  • si - Čas strávený zpracováním softwaru přerušuje rutiny. (část kódu, volá rutinu přerušení ...)
  • st - Čas strávený na nedobrovolných čekáních virtuálního procesoru, zatímco hypervisor obsluhuje jiný procesor (ukradený z virtuálního počítače)
20
Simon Rigét

Hodnotu „st“ lze jednoduše vysvětlit pomocí instance T2.micro EC2 od AWS.

V dokumentace AWS si můžete přečíst, že dostanete pouze 10% základní výkon na VCPU. To znamená, že pokud máte proces, který by spotřeboval spoustu času procesoru, zůstane hodnota „st“ kolem 90, protože máte povoleno použít pouze 10% VCPU. Součet ostatních hodnot zůstane kolem 10.

AWS tedy pomocí hypervizoru umožňuje pouze přístup k určitému množství výpočetního výkonu. Zpomaluje vás to záměrně, protože používáte pouze typ instance nižší úrovně.

Doufám, že to trochu usnadní pochopení věcí.

2
draufunddran