GNU/Linux >> Znalost Linux >  >> Linux

Využití procesoru Linux a historie provádění procesů

Řešení 1:

Existuje několik možných způsobů, jak to udělat. Všimněte si, že je zcela možné, že to způsobí mnoho procesů ve scénáři s útěkem, nejen jeden.

První způsob je nastavit pidstat tak, aby běžel na pozadí a produkoval data.

pidstat -u 600 >/var/log/pidstats.log & disown $!

Získáte tak poměrně detailní přehled o chodu systému v desetiminutových intervalech. Navrhoval bych, aby to byl váš první port, protože vytváří nejcennější/nejspolehlivější data, se kterými lze pracovat.

S tím je problém, především pokud se box dostane do nekontrolované smyčky procesoru a produkuje obrovské zatížení - nemáte zaručeno, že váš skutečný proces se během načítání provede včas (pokud vůbec), takže byste mohli skutečně zmeškat výstup !

Druhý způsob, jak to hledat, je povolit procesní účetnictví. Možná spíše dlouhodobější varianta.

accton on

To umožní účtování procesů (pokud již není přidáno). Pokud předtím neběžel, bude to vyžadovat čas ke spuštění.

Po spuštění, řekněme 24 hodin - můžete spustit takový příkaz (který vytvoří výstup podobný tomuto)

# sa --percentages --separate-times
     108  100.00%       7.84re  100.00%       0.00u  100.00%       0.00s  100.00%         0avio     19803k
       2    1.85%       0.00re    0.05%       0.00u   75.00%       0.00s    0.00%         0avio     29328k   troff
       2    1.85%       0.37re    4.73%       0.00u   25.00%       0.00s   44.44%         0avio     29632k   man
       7    6.48%       0.00re    0.01%       0.00u    0.00%       0.00s   44.44%         0avio     28400k   ps
       4    3.70%       0.00re    0.02%       0.00u    0.00%       0.00s   11.11%         0avio      9753k   ***other*
      26   24.07%       0.08re    1.01%       0.00u    0.00%       0.00s    0.00%         0avio      1130k   sa
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28544k   ksmtuned*
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     28096k   awk
      14   12.96%       0.00re    0.01%       0.00u    0.00%       0.00s    0.00%         0avio     29623k   man*
       7    6.48%       7.00re   89.26%       0.00u    0.00%       0.00s    

Sloupce jsou seřazeny takto:

  1. Počet hovorů
  2. Procento hovorů
  3. Množství reálného času stráveného všemi procesy tohoto typu.
  4. Procento.
  5. Čas procesoru uživatele
  6. Procento
  7. Čas procesoru systému.
  8. Průměrné IO volání.
  9. Procento
  10. Název příkazu

To, co budete hledat, jsou typy procesů, které generují nejvíce času CPU uživatele/systému.

To rozdělí data jako celkové množství času CPU (horní řádek) a potom, jak byl tento čas CPU rozdělen. Účtování procesů se správně účtuje pouze tehdy, když je zapnuto, když se procesy spustí, takže je pravděpodobně nejlepší restartovat systém poté, co jej povolíte, aby bylo zajištěno, že budou účtovány všechny služby.

To vám v žádném případě nedává konkrétní představu, jaký proces může být příčinou tohoto problému, ale může vám poskytnout dobrý pocit. Vzhledem k tomu, že se může jednat o 24hodinový snímek, existuje možnost zkreslených výsledků, takže na to pamatujte. Také by se měl vždy logovat, protože je to vlastnost jádra a na rozdíl od pidstat bude vždy vytvářet výstup i při velkém zatížení.

Poslední dostupná možnost také využívá účtování procesů, takže je můžete zapnout, jak je uvedeno výše, ale poté použijte program "lastcomm" k vytvoření některých statistik procesů spuštěných v době, kdy došlo k problému, spolu se statistikami procesoru pro každý proces.

lastcomm | grep "May  8 22:[01234]"
kworker/1:0       F    root     __         0.00 secs Tue May  8 22:20
sleep                  root     __         0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                     root     pts/0      0.00 secs Tue May  8 22:49
sa                   X root     pts/0      0.00 secs Tue May  8 22:49
ksmtuned          F    root     __         0.00 secs Tue May  8 22:49
awk                    root     __         0.00 secs Tue May  8 22:49

To vám také může napovědět, co může být příčinou problému.

Řešení 2:

Atop je obzvláště praktický démon pro prohlížení podrobností na úrovni procesu a ve výchozím nastavení tato data archivuje po dobu 28 dní. Kromě prezentace úžasného rozhraní pro monitorování v reálném čase můžete tyto soubory protokolu otevřít a procházet je.

Článek poskytuje určitou představu o možnostech a více najdete na manuálové stránce.

Je to opravdu úžasný kus softwaru.

Řešení 3:

Mohou vám pomoci programy jako psmon a monit. Ty mohou monitorovat procesy běžící na vašem systému a pokud dojde k překročení jakékoli prahové hodnoty (vytížení CPU, využití paměti...), můžete nastavit, aby vám posílali e-mailovou zprávu o tom, co se děje.

Je také možné automaticky restartovat nesprávně se chovající procesy.


Linux
  1. Najděte nejběžnější procesy podle nejvyššího využití paměti a CPU v Linuxu

  2. Linux Cat Command:Použití a příklady

  3. Příkaz Linux Sed:Použití a příklady

  1. Jak najít a zabít zombie proces v Linuxu

  2. Najděte čas provedení příkazu nebo procesu v systému Linux

  3. Jak omezit využití CPU procesu v Linuxu

  1. Načíst využití CPU a paměti jedním procesem v Linuxu?

  2. Jak vypočítat využití CPU procesu pomocí PID v Linuxu z C?

  3. Omezení využití procesní paměti/CPU v linuxu