Toon posts:

CPU usage meter

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben op zoek naar een _goede_ text-based cpu usage meter voor linux. Dus niet top want die is veel te traag, het resultaat moet binnen de seconde te verkrijgen zijn.

enige suggesties?

  • ajvdvegt
  • Registratie: Maart 2000
  • Laatst online: 04-12-2025
Je kan de verversings periode aanpassen hoor met top. Of anders deze:
code:
1
cat /proc/cpuinfo

:+

I don't kill flies, but I like to mess with their minds. I hold them above globes. They freak out and yell "Whooa, I'm *way* too high." -- Bruce Baum


Verwijderd

Topicstarter
het probleem is dus eigenlijk dat ik deze waarde in een script wil gebruiken, en het duurt bij top een tijdje voordat de eerste waarde te verkrijgen is (onafhankelijk van updatesnelheid). En in /proc/cpuinfo staat niks vermeld over cpu load...

  • Ganja-Cape
  • Registratie: Maart 2001
  • Laatst online: 25-11-2025
uptime? en dan ff de string splitten in PHP bijvoorbeeld?

  • UltraSub
  • Registratie: Mei 2003
  • Laatst online: 18-02 12:18
Waarom in php, als hij gewoon een shell script draait ;)

  • Kippenijzer
  • Registratie: Juni 2001
  • Laatst online: 11-02 20:53

Kippenijzer

McFallafel, nu met paardevlees

vmstat lijkt me hiervoor bruikbaar, 2 resultaten laten geven, en de 2e hiervan gebruiken (alternatief zou een daemon zijn die op de achtergrond draait, en die als jij erom vraagt het dan huidige gebruik geeft)

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

in /proc/uptime staan de load avgs. 'uptime' draaien en daar op verder gaan is voor amateurs ;)

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

Load average is geen CPU-usage, dus /proc/uptime vertelt je alleen hoe zwaar je systeem belast is (hoeveel processen er in de wacht staan) maar niet hoe zwaar je CPU belast is.

Het probleem met CPU-belasting is dat je het alleen over een tijdsinterval meten kunt, de cpu waardes in /proc/stat zijn user, nice, system en idle tijd in jiffies (honderdsten van seconden, zie man proc), dus je zult op zijn minst twee keer deze waardes moeten inlezen en uit het verschil het gebruik berekenen. Beter zou het zijn het gemiddelde van een groter aantal metingen te nemen (anders zit je misschien de belasting die het script veroorzaakt te meten). Dat is dus tevens de reden waarom het even duurt voordat programma's als top een CPU-usage presenteren.

Overigens is het uitlezen van /proc/stat nogal lastig vanuit een shellscript, dat lijkt me meer werk voor AWK of Perl.

Verwijderd

hmm, misschien is het in de source van gkrellm te vinden, want die kan zelfs 10x per seconde mooie stats laten zien. Is waarschijnlijk C++ oid, maar kan evt. ook in je script gezet worden.

  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

gkrellm is C.

mietje: ik had 't meer tegen Ganja-Cape ;)

All my posts are provided as-is. They come with NO WARRANTY at all.


Verwijderd

Tis zondag, dus ik heb maar een scriptje gefabriekt :)

Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!/bin/bash

function get_jiffies () {
    awk '/^cpu\>/ { print $2, $3, $4, $5 }' /proc/stat
}

function cpu_usage () {
    (get_jiffies; sleep ${1:-1}; get_jiffies) | awk \
        'BEGIN { \
            pass= 0 \
        } \
        { \
            if(++pass == 1) for(n= 1; n < 5; ++n) time[n]= $n; \
            else for(n= 1; n < 5; ++n) time[n]= $n - time[n]; \
        } \
        END { \
            total= time[1]; \
            for(n= 2; n < 5; ++n) total+= time[n]; \
            for(n= 1; n < 5; ++n) time[n]= time[n] * 100 / total; \
            printf "user:%5.1f%% nice:%5.1f%% system:%5.1f%% idle:%5.1f%%\n", \
                time[1], time[2], time[3], time[4]; \
        }'
}

cpu_usage ${1}


Het script gebruikt een parameter om de wachttijd tussen de metingen te bepalen, geef je geen parameter op dan wordt er 1 seconde gewacht.

edit:
scriptje wat mooier gelayout.

[ Voor 26% gewijzigd door Verwijderd op 11-07-2004 20:22 ]


  • psyBSD
  • Registratie: April 2004
  • Laatst online: 02-01-2021

psyBSD

Hates 0x00 bytes

mooi scriptje (ik moet toch eens leren met awk om te gaan)

ik dacht eerst dattie niet werkte:
tty1 said:
user: 0.0% nice: 0.0% system: 0.0% idle:100.0%
maar nadat ik het volgende uitvoerde:
code:
1
cat /dev/zero > /dev/null
tty1 said:
user: 27.7% nice: 0.0% system: 72.3% idle: 0.0%
:)

| Olympus OM-D EM10 mk2 | m.Zuiko 14-42mm f/3.5-5.6EZ | m.Zuiko 40-150mm f/4-5.6 R | m.Zuiko 60mm f/2.8 | 2x Godox v860 | Godox X1 |


Verwijderd

Topicstarter
thx, mooi scriptje.
heb je al eens getest hoeveel cpu use het scriptje zelf geeft? :*)

Verwijderd

Verwijderd schreef op 11 juli 2004 @ 21:51:
thx, mooi scriptje.
heb je al eens getest hoeveel cpu use het scriptje zelf geeft? :*)
Op 1 seconde minder dan 0.1% usage, dus dat valt wel mee. Als je kleinere tijdseenheden gebruikt (scriptje opstarten met parameter 0.1 of zo) zie je afentoe wat belasting, maar over zo korte periodes meten levert toch geen relevante resultaten op (een nieuw gestart proces vertekent het resultaat compleet).

Ik vond het zelf ook wel een leuk script dus ik heb het uitgebreid zodat de resultaten nu uitgesplitst zijn per processor (leuk voor SMP-systemen) en dat je de belasting nu ook meten kunt over een willekeurig commando (in de trand van time), als er belangstelling voor is post ik het wel.

  • TukkerTweaker
  • Registratie: November 2001
  • Laatst online: 20:32
Verwijderd schreef op 11 juli 2004 @ 23:59:
[...]

Ik vond het zelf ook wel een leuk script dus ik heb het uitgebreid zodat de resultaten nu uitgesplitst zijn per processor (leuk voor SMP-systemen) en dat je de belasting nu ook meten kunt over een willekeurig commando (in de trand van time), als er belangstelling voor is post ik het wel.
Er is belangstelling voor!

Verwijderd

Ik heb het script hier gepost (zo komt er misschien weer wat leven in dat topic).

(Het blijkt trouwens dat alle backslashes in het script hierboven overbodig zijn...)
Pagina: 1