CPU-Last auswerten

Alle weiteren Dienste, die nicht in die drei oberen Foren gehören.
Antworten
=Jägermeister=
Beiträge: 106
Registriert: 19.01.2006 16:14:28

CPU-Last auswerten

Beitrag von =Jägermeister= » 22.09.2006 09:15:26

Hallo gibt es eine möglichkeit die CPU-Last über einen bestimmten Zeitraum auszuwerten ohne RRDTool ? Also einfach so per script oder so ? Ich brauch keine grafische Darstellung oder so sondern wirklich einfach nur die Zahl der z.B. stündlichen durchschnitts Auslastung in %

Hat da jemand eine Idee ??

Benutzeravatar
HELLinG3R
Beiträge: 1328
Registriert: 15.04.2004 07:54:33

Beitrag von HELLinG3R » 22.09.2006 09:25:01

Du könntest mittels "uptime" die Loadaverage messen und in eine Datei anhängen, die du dann mit gnuplot grafisch aufbereiten kannst.
Perl macht Spass.

=Jägermeister=
Beiträge: 106
Registriert: 19.01.2006 16:14:28

Beitrag von =Jägermeister= » 22.09.2006 10:01:39

wie sind die zahlen zur load average zu werten ? habe ja 3 werte. für 1min , 5min & 15min.

aber wie kann ich anhand eines wertes z.B. 2.37 die auslastung ablesen ? quasi den wert den ich erhalten möchte wäre : Durchschnitts-Auslastung zwischen 13-14 Uhr = 40%

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 22.09.2006 10:36:44

Das kannst du anhand der Load gar nicht. Die Load bezeichnet nur, wieviele Prozesse in der Warteschlange stehen und darauf warten, dass sie vom Prozessor ausgefuehrt werden duerfen. Ne Load von 100 waere also nicht 100% sondern 100 Prozesse, die auf CPU-Zeit warten. Wobei ne Load von 100 schon sehr sehr hoch ist.

=Jägermeister=
Beiträge: 106
Registriert: 19.01.2006 16:14:28

Beitrag von =Jägermeister= » 22.09.2006 10:47:45

warum bekomme ich dann wenn ich nichts mache ne ausgabe von : load average 0.00 , 0.00 , 0.00 und wenn ich z.B. ein find befehl auf wurzelverzeichniss mache (also wo er paar sekündchen brauch) ne ausgabe von load average 0.08, 0.02, 0.01

der findbefehl wird doch sofort ausgführt und befindet sich nicht in der warteschlange.

jhr-online
Beiträge: 2186
Registriert: 18.09.2005 15:52:02
Lizenz eigener Beiträge: GNU Free Documentation License
Kontaktdaten:

Beitrag von jhr-online » 22.09.2006 11:23:18

Aber es gibt noch eine Menge andere Prozesse, die dann nicht sofort laufen, weil du ja find angefordert hast... einfach mal mit

Code: Alles auswählen

top                 oder
htop
anschauen, was da so alles läuft...

jhr
Desktop: Intel Core2Quad Q8300 2.5GHz, 256GB SSD + 1 TB HDD, 8 GB RAM, Debian Sid, Kernel 3.13

=Jägermeister=
Beiträge: 106
Registriert: 19.01.2006 16:14:28

Beitrag von =Jägermeister= » 22.09.2006 12:02:43

ok. ja top ist mir bekannt. kann ich mit einem weiteren argument mir nur die CPU Last anzeigen lassen. also keine prozesse etc. hab schon mal in die lange manual geguckt und etwas rumprobiert mit %CPU un so bis jetzt hab ich aber noch nichts herrausgefunden. weiß das zufällig gerad jemand ??

cosmac
Beiträge: 4576
Registriert: 28.03.2005 22:24:30

Beitrag von cosmac » 22.09.2006 12:17:31

hi,

in "/proc/uptime" stehen 2 Zahlen:
- Sekunden seit dem Booten
- Sekunden in der Idle-Task; solange hat die CPU nichts getan
Passend umgerechnet ist das doch genau was du suchst?
Wenn das dann zu jeder vollen Stunde angezeigt werden soll:

Code: Alles auswählen

#!/bin/bash
#
# periodische CPU-Auslastungs-Anzeige

DELAY=3600   # Sekunden Pause zwischen 2 Anzeigen

# /proc/uptime darf nur einmal gelesen werden, damit beide Werte zusammenpassen
UPTIME=`tr -d '.' < /proc/uptime`
OLD_TOTAL=`echo $UPTIME | cut -f 1 -d ' '`
OLD_IDLE=`echo $UPTIME | cut -f 2 -d ' '`

# erste Pause bis zur naechsten vollen Stunde
# BUG: wenn die zufaellig sehr kurz ist, ist die erste Anzeige ungenau
sleep $(( $DELAY - (`date +%s` % $DELAY) ))

while true ; do

   NOW=`date +%H:%M:%S`

   UPTIME=`tr -d '.' < /proc/uptime`
   NEW_TOTAL=`echo $UPTIME | cut -f 1 -d ' '`
   NEW_IDLE=`echo $UPTIME | cut -f 2 -d ' '`

   TOTAL=$(( NEW_TOTAL - OLD_TOTAL ))
   IDLE=$(( NEW_IDLE - OLD_IDLE ))
   OLD_TOTAL=$NEW_TOTAL
   OLD_IDLE=$NEW_IDLE

   echo 'CPU-Auslastung um' $NOW '=' $(( ((TOTAL - IDLE) * 100) / TOTAL )) '%'

   # wenn's ganz genau geht, muesste man gelegentlich 1 Sekunde weniger warten
   sleep $DELAY

done
CPU-Zeit nach System/User getrennt steht in "/proc/stat", aber da aendert sich
das Format öfter mal mit einem neuen Kernel. Das Prinzip ist aber gleich.
Beware of programmers who carry screwdrivers.

=Jägermeister=
Beiträge: 106
Registriert: 19.01.2006 16:14:28

Beitrag von =Jägermeister= » 22.09.2006 14:38:40

ah danke das sieht doch ganz gut aus !

beim ausführen passiert aber leider nichts :-/

nepos
Beiträge: 5238
Registriert: 05.01.2005 10:08:12

Beitrag von nepos » 22.09.2006 14:43:45

Also bei mir funktionierts. Wenn du die 3600 Sekunden laesst, dauert es bis zum naechsten Stundenwechsel, bevor eine Anzeige kommt ;)
Ich habs bei mir grade mal fix mit 2 Sekunden getestet und das klappt 1a.

=Jägermeister=
Beiträge: 106
Registriert: 19.01.2006 16:14:28

Beitrag von =Jägermeister= » 22.09.2006 16:36:55

hab eben mal reboot jetzt gehts bei mir auch. keine ahnung wo da der wurm drin war.

wie sieht das eigentlich aus bei server mit mehr als einer cpu? wir haben z.B. mehrere RX300S2 von FS im einsatz die haben 2 Xeon Cpu´s. Habe einen Screenshot im i-net gesehen wo der top dann 2 cpu auslastungen anzeigt. bei uns aber immer nur eine auslastung. debian erkennt auch aufjedenfall beide cpus. in /proc/cpuinfo sind 4 einträge , für 2 cpu´s mit je 2 kernen.

Benutzeravatar
meandtheshell
Beiträge: 4054
Registriert: 14.01.2005 17:51:30

Beitrag von meandtheshell » 22.09.2006 17:48:46

- Du könntest munin verwenden http://www.debianforum.de/forum/viewtopic.php?t=71029
- nach dem aufruf von top kannst Du mit "I" in den Solaris bzw. Irix mode wechseln und alle Angaben/CPU sehen
-- Voraussetzung die Hardware ist ein Mehrweg und/oder multicore system
-- und der Kernel ist ein smp fähiges kernel binary

markus

Antworten