Obtenga estadísticas de utilización de la CPU del programa C


8

Quiero leer las estadísticas de utilización de la CPU de un programa en C, estoy interesado en el porcentaje de uso de la CPU, el tiempo de robo , etc. Estas estadísticas se muestran en la tercera fila del topcomando.

Traté de analizar topla salida de awk( top -n 1 -b | awk '{print $0}'), pero parece que topsiempre da los mismos valores "ficticios" antes de que comience a mostrar las estadísticas correctas.

¿Hay alguna forma de código, o analizando la salida de algún comando para obtener las estadísticas de utilización de la CPU?

Editar:

La plataforma es Linux.

Gracias.


Claro, pero no hay una forma estándar. Precisar el sistema operativo objetivo.
jlliagre

Respuestas:


5

Desea leer las primeras líneas de /proc/stat. Tendrá que leerlo dos veces, un tiempo medido aparte, y restar el primer conjunto de números del segundo. Las líneas se ven así:

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 primera línea es agregada para todos los núcleos. Las siguientes líneas muestran cada núcleo. Cuando vea la línea que comienza con intr, sabe que debe dejar de analizar.

Cada número es la cantidad de tiempo que la CPU ha pasado en un estado particular. Las unidades son típicamente centésimas de segundo. Los campos son user, nice, system, idle, iowait, irq, softirq, steal, guest, y guest_nice.

La documentación autorizada es, por supuesto, el código fuente. Si tiene a mano una copia de la fuente del kernel de Linux, mire fs/proc/stat.c, particularmente la show_statfunción.


¿Sabes a qué frecuencia se actualiza el proceso / estadística? como una vez cada 1ms o algo así, gracias.
0xFF

No son archivos reales. Sus contenidos se calculan cuando los abre.
David Schwartz

3

Hay algún ejemplo en la web que muestra cómo leer /proc/pid/staten C.

Puede leer utimeo stimevalores en dos momentos distintos y calcular las estadísticas de utilización de CPU deseadas. (Supongo que también topusa estos datos en bruto).

(Olvidé: esto es específico de Linux).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.