[linux] cpuload uitlezen

Pagina: 1
Acties:

  • Carnifex
  • Registratie: Januari 2000
  • Laatst online: 14-08 11:17
Ik word niet goed van het zoeken, dus post ik toch maar even de vraag:

Hoe kan ik de CPUload opvragen zodat ik het daarna kan gebruiken in mijn C code? Dus gewoon de system CPU-load van de afgelopen x seconden ofzo. thanxz a million! :)

Verwijderd

je gemiddelde load (load average) kun je opvragen met bijvoorbeeld uptime of cat /proc/loadavg | awk '{ print $1,$2,$3 '} - misschien dat je wat kunt proberen met die laatste file (/proc/loadavg)?

Verwijderd

Met ps kun je de load per proces zien.
En de gemiddelde load kan idd met uptime opgevraagd worden.

  • Carnifex
  • Registratie: Januari 2000
  • Laatst online: 14-08 11:17
ik wil niet het gemiddelde, maar wat het nu is. Eigenlijk heb je altijd een gemiddelde natuurlijk, maar ik bedoel zoiets als je in TOP ziet, maar dan alleen de totale CPU load.
Ik heb al zitten kijken in /proc/stat. Daar staat een entry cpu, maar het is mij niet duidelijk hoe ik daar de load van de afgelopen seconden uit destileer, ook niet nadat ik in de man van proc heb gekeken. Daar wordt gesproken over 1/100 'jiffies' :? :
cpu 'user mode','nice','system/100*e2 entry van de uptime-file'

Op een of andere manier kan TOP ook de load uit de /proc halen lijkt me, dus het zal toch moeten kunnen :P.

Verwijderd

misschien niet zo'n hele nette manier, maar het is denk ik wel ongeveer wat jij vraagt...
code:
1
top -bn1 | grep 'CPU states' | awk '{ print $3,$4,$5,$6,$7,$8 '} | tr -d ','

het geeft je ongeveer de volgende output:
code:
1
5.6% user 2.9% system 0.1% nice

  • Carnifex
  • Registratie: Januari 2000
  • Laatst online: 14-08 11:17
Ik zal maar verklappen waar ik het voor ga gebruiken:

Ik heb een laptop met ACPI, dat werkt allemaal prima, maar de CPU throttling gaat niet automatisch. Ik moet nu iedere keer 'echo 4 /proc/acpi/processor/CPU1/throttling' doen om naar state 4 te gaan bv. Ik wil graag dat als de CPU load laag is de CPU erg gethrottled wordt. met het ACPID gebeuren kun je scripts schrijven voor 'events' die plaatsvinden. Het leek me handig om dan de load aan de throttling te koppelen.

Het uitlezen op de laatstgenoemde manier werkt bij mij niet goed. Als ik een dnetc client benchmark draai, dan komt de som van $3 $5 $7 niet boven de 19% uit. Als ik top draai, dan zie ik ook de eerste keer 18% ofzo bij 'user' staan (en 99,5% in de processenlijst bij dnetc), maar de 2e update van top laat wel de juiste 99,8% bij user zien. Vaag nieuw probleem dus.

Makkelijker zou zijn als ik een stukje C kon schrijven dat op een of andere manier de load leest iedere seconde en aan de hand daarvan een echo naar de throttling stuurt
Pagina: 1