Portál AbcLinuxu, 27. července 2025 06:12


Dotaz: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?

20.11.2005 14:26 em
jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Přečteno: 1685×
Odpovědět | Admin
Ahoj Pro svuj skript bych potreboval zjistovat stav zatizeni cpu v realnem case. TOP pouzit nejde, kdyz zkusim presmerovat vystup, hodnoty cpu nedostanu, iostat a vmstat ukazuji zase jen prumerne hodnoty nebo hodnoty nekolika nasledujicich behu. Jaky prikaz tedy pouzit?
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.11.2005 14:54 tomas84 | skóre: 30
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Já používám pro vytváření grafu zatížení CPU příkaz atsar.
20.11.2005 14:59 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Odpovědět | | Sbalit | Link | Blokovat | Admin
uptime | awk '{print $8}' | sed 's/,//'
Užívej dne – možná je tvůj poslední.
20.11.2005 15:24 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
To je load average, se zatížením procesoru to moc společného nemá.
20.11.2005 15:25 tomas84 | skóre: 30
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Hm, zajímavý příkaz...
tomas@hugo:~$ uptime | awk '{print $8}' | sed 's/,//'
load
David Watzke avatar 20.11.2005 15:33 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Mě to vypíše taky load. Možná má starou verzi...
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.11.2005 15:40 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
finn ~ # load
-bash: load: command not found
Užívej dne – možná je tvůj poslední.
20.11.2005 16:50 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Kolegové měli na mysli něco jiného: že jim vaše konstrukce místo hodnoty load average vypíše slovo 'load'.
20.11.2005 17:02 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Aha, stejně jsem to psal jenom jako náznak toho, jak to řešit...
Užívej dne – možná je tvůj poslední.
21.11.2005 07:23 trancelius | skóre: 22
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
to už je rychlejší číst rovnou první sloupec v souboru /proc/loadavg, aby se nemusel spouštět uptime a pouštět přes rouru
20.11.2005 16:49 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Prostě to různé verze formátují různě. Mně to např. sice vypíše minutový load average, ale protože mám české locale, místo čárky za hodnotou to odstranní desetinnou čárku (budiž proklet, kdo vymyslel desetinnou čárku, nechť se smaží v pekle hned vedle autora ČSN normy pro řazení slov). Lepší by bylo parsovat rovnou /proc/loadavg, tam je větší šance, že to bude vypadat tak, jak člověk čeká…
20.11.2005 15:00 rajcze | skóre: 6 | blog: rajcze | kus od Brna
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Odpovědět | | Sbalit | Link | Blokovat | Admin
treba tak...
#!/usr/bin/perl

my $proc=`top b -d0 -n1 | grep processes | tail -n 1`;
my $cpu=`top b -d1 -n3 | grep "CPU states" | tail -n 1`;

#44 processes: 43 sleeping, 1 running, 0 zombie, 0 stopped
#CPU states: 0.8% user, 1.4% system, 0.0% nice, 97.8% idle

@arr=split(/ /,$proc);
$proc=$arr[0];

$cpu=~s/^[^0-9]+//;
$cpu=~s/[^0-9\.]+/#/g;
@arr=split(/#/, $cpu);

$user=$arr[0];
$system=$arr[1];
Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet.
20.11.2005 20:19 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Odpovědět | | Sbalit | Link | Blokovat | Admin
proc(5) je trochu zastaralá, ale snad to funguje (jenom to neměří moc přesně, občas dostaneš 101 "procent"):
#!/bin/sh

delay=1 
read cpu old_user old_nice old_sys old_idle rest </proc/stat 
sleep $delay 
while read cpu user nice sys idle rest </proc/stat; do 
        echo "$((user-old_user)) $((nice-old_nice)) $((sys-old_sys)) $((idle-old_idle))";
        let "old_user=user, old_nice=nice, old_sys=sys, old_idle=idle"; 
        sleep $delay;
done
David Watzke avatar 20.11.2005 23:25 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
101%? To mi připomíná Správce úloh. :-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
20.11.2005 23:28 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Nejsou to spíš zaokrouhlovací chyby než nepřesnost měření?
25.11.2005 00:26 Michal Marek (twofish) | skóre: 55 | blog: { display: blog; } | Praha
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Ne, protože to ani nezaokrouhluje :-) Jde o to, že interval mezi dvěma měřeními nebude vždycky 100ms, ale o něco víc (při vyšší zátěži). Chtělo by to počítat skutečná procenta (vydělit každou hodnotu součtem a vynásobit 100), pak by přišly na řadu zaokrouhlovací chyby.
20.11.2005 22:22 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Stav zatížení systému lze zjistit v Pythonu pomocí funkce os.getloadavg(). Vrací tři hodnoty - průměr zatěže za poslední minutu, za posledních 5 minut a za posledních 15 minut. Zde je ukázka:
#!/usr/bin/env python
import os
while True:
  load1,load5,load15 = os.getloadavg()
  print 'Prumer zateze systemu za posledni'
  print '1 minutu:', load1
  print '5 minut:', load5
  print '15 minut:', load15
Program bude stále vypisovat zátěž systému a protože je to nekonečná smyčka, bude zatížení narůstat ;-)
20.11.2005 23:18 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
Uff. Tak ještě jednou:

Load average není zatížení procesoru.

21.11.2005 09:09 Jiří Veselský | skóre: 30 | blog: Jirkovo | Ostrava
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?

Asi nejvíc se dost vágní definici "zatížení procesoru" podobají údaje v souboru /proc/stat, konkrétně řádky začínající cpu. Jde o kumulativní statistiky počtu jiffies, které procesor strávil v různých režimech - podrobnosti viz man proc.

21.11.2005 14:27 Beda
Rozbalit Rozbalit vše Re: jaky prikaz pouzit pro zjisteni zatizeni CPU ve skriptu?
... v load average se da dostat hodnota i o hodne pres 100, protoze jak tu padlo nema s procesorem nic spolecneho. tyka se front procesu a scheduleru.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.