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.
monitoring
cpu
c
top
0xFF
fuente
fuente

Respuestas:
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í: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, yguest_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 lashow_statfunción.fuente
Hay algún ejemplo en la web que muestra cómo leer
/proc/pid/staten C.Puede leer
utimeostimevalores en dos momentos distintos y calcular las estadísticas de utilización de CPU deseadas. (Supongo que tambiéntopusa estos datos en bruto).(Olvidé: esto es específico de Linux).
fuente