Re: Prozessor-Auslastung auslesen

From: Oliver Fromme <olli(at)secnetix.de>
Date: Tue, 28 Jan 2003 21:46:33 +0100 (CET)

Patrick Hess <patrick_hess(at)t-online.de> wrote:
> siehe Subject: Ich möchte gerne die Prozessor-Auslastung, so wie
> sie beispielsweise "top" als "CPU states" anzeigt, aus einer Datei
> auslesen.

Huch, wieso aus einer Datei?

> Irgendwo her muß "top" diese Daten ja schließlich auch
> bekommen.

Aus dem Kernel, selbstverständlich, per libkvm.

> Ich dachte da sofort an /proc (ich weiß, Linux-Seuche), dort finde
> ich aber nichts, was ich gebrauchen könnte.

Wäre auch übel, wenn's das da gäbe. Das Konzept von Linux,
den Kernel irgendwelche Daten in ASCII rendern zu lassen,
um diese dann wiederum mit Programmen wie z.B. top zu par-
sen, ist absurd.

Falls Du die Werte, die top anzeigt, in einem Shellscript
brauchst, dann hol sie Dir halt von top:

   #!/bin/sh -
   read x x PUSER x PNICE x PSYS x PINT x PIDLE x <<daer
   $(top -bd 2 0 | grep "CPU states:")
   daer
   echo "User: $PUSER"
   echo "Nice: $PNICE"
   echo "System: $PSYS"
   echo "Interrupt: $PINT"
   echo "Idle: $PIDLE"

Allerdings kann sich das Format der Zeile je nach Version
geringfügig unterscheiden; entsprechende müßtest Du die
read-Zeile anpassen.

Wenn Dir user/system/idle genügen, bekommst Du diese Werte
auch aus vmstat. Das ist wahrscheinlich etwas zuverlässi-
ger mit dem Parsen, weil sich das Format wohl kaum ändern
wird. Entscheidend ist, daß man die zweite Ausgabezeile
nehmen muß, da die erste nur die Mittelwerte seit dem Re-
boot angibt. Bei den CPU-States handelt es sich ja nicht
um punktuell erfaßbare Werte, sondern sie werden über einen
gewissen Zeitraum gemittelt.

Die Variante des Skriptes mit vmstat:

   #!/bin/sh -
   read PUSER PSYS PIDLE <<daer
   $(vmstat -c 2 | awk 'END{print $(NF-2),$(NF-1),$NF}')
   daer
   echo "User: $PUSER"
   echo "System: $PSYS"
   echo "Idle: $PIDLE"

Wenn Du die Werte in einem C-Programm brauchst, nimmst Du
am besten ebenfalls die libkvm. Wie's genau geht, kannst
Du ja im Quelltext von top nachlesen.

Falls ich Deine Frage mißverstanden habe, bitte ich um
Nachsicht und Erleuchtung. :-)

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"All that we see or seem is just a dream within a dream" (E. A. Poe)
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Tue 28 Jan 2003 - 21:46:48 CET

search this site