Ottieni statistiche sull'utilizzo della CPU dal programma C.


8

Voglio leggere le statistiche di utilizzo della CPU da un programma C, sono interessato alla percentuale di utilizzo della CPU, rubare tempo ecc. Queste statistiche sono mostrate nella terza riga dal topcomando.

Ho provato a analizzare topl'output con awk( top -n 1 -b | awk '{print $0}'), ma sembra che topdia sempre gli stessi valori "immaginari" prima che inizi a mostrare le statistiche corrette.

Esiste un modo dal codice o analizzando l'output di alcuni comandi per ottenere le statistiche di utilizzo della CPU?

Modificare:

La piattaforma è Linux

Grazie.


Certo, ma non esiste un modo standard. Precisare i sistemi operativi di destinazione.
jlliagre,

Risposte:


5

Vuoi leggere le prime poche righe di /proc/stat. Dovrai leggerlo due volte, a distanza di tempo misurata e sottrarre la prima serie di numeri dalla seconda. Le linee sono così:

cpu  1526724 408013 600675 541100340 2861417 528 14531 0 0 0
cpu0 344507 77818 251244 134816146 1119991 324 13283 0 0 0
cpu1 502614 324065 179301 133991407 1631824 136 906 0 0 0
cpu2 299080 3527 79456 136144067 103208 59 255 0 0 0
cpu3 380521 2602 90672 136148719 6393 7 86 0 0 0
intr 2111239193 344878476 16943 ...

La prima riga è aggregata per tutti i core. Le righe successive mostrano ciascun core. Quando vedi la linea che inizia con intr, sai di smettere di analizzare.

Ogni numero è la quantità di tempo che la CPU ha trascorso in un determinato stato. Le unità sono in genere centesimi di secondo. I campi sono user, nice, system, idle, iowait, irq, softirq, steal, guest, e guest_nice.

La documentazione autorevole è, ovviamente, il codice sorgente. Se hai una copia del sorgente del kernel Linux a portata di mano, guarda fs/proc/stat.c, in particolare la show_statfunzione.


Sai con quale frequenza viene aggiornato il proc / stat? come una volta ogni 1ms o qualcosa del genere, grazie.
0xFF,

Non sono file reali. Il loro contenuto viene calcolato all'apertura.
David Schwartz,

3

C'è qualche esempio sul web che mostra come leggere /proc/pid/statin C.

È possibile leggere utimeo stimevalori in due momenti distinti e calcolare le statistiche di utilizzo della CPU desiderate. (Immagino che topusi anche questi dati non elaborati.)

(Ho dimenticato: questo è specifico di Linux.)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.