Prošel jsem problémem, kdy jsem mohl jen hádat, jaký proces požíral procesor.
Moje využití procesoru bylo asi 80 % pro všechna jádra v psensor.
Zkoušel jsem htop , top a ps -A -o pcpu,pid,cmd --sort +pcpu (poslední jsem dokonce zkoušel se sudem bez úspěchu).
Všechny tyto ukázaly pid viníka (kterého jsem si byl vědom) s použitím pouze asi 7 %…
Když na tom pid SIGKILL, vše se vrátí do normálu.
Pro testování jsem udělal nekonečnou smyčku na terminálu while true;do echo -n;done ale to jsem jasně viděl na htop; takže můj odhad, co způsobilo potíže, nebylo podobné tomu…
Tak by mě zajímalo, jestli existují jiné způsoby, jak bych mohl najít viníka, aniž bych musel hádat?
Znovu přemýšlím a myslím, že bych rád věděl, jaké výpočty má psensor a „aplet indikátoru zatížení systému“ používá, který dokázal ukázat tuto hodnotu, ale ostatní to nedokázali?
PS.:odkaz na dobu čekání,
odkaz na průměrnou zátěž
Přijatá odpověď:
Nejsem dostatečně obeznámen s detaily, abych mohl poskytnout přesné rady, ale myslím, že existují dva zdroje rozdílů mezi skutečným zatížením a zobrazeným využitím CPU:
-
Proces se může skládat z několika vláken a
topnelze je shrnout. Počet vláken můžete vidět takto:ps -eo pid,nlwp,%cpu,user,argsV
topmůžete přepnout zpracování vláken pomocíH. Využití CPU každého vlákna je obvykle poměrně nízké. -
Proces může způsobit velké množství I/O. Doba čekání na vstup/výstup je součástí celkového zatížení procesoru, ale nemusí být součástí hodnoty využití procesoru procesem. Zkontrolujte tedy
waithodnota vtop. Neřekne vám, které procesy to způsobují, do jaké míry, ale pokud je hodnota nízká, nedokáže vysvětlit účinek.