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 top
comando.
Traté de analizar top
la salida de awk
( top -n 1 -b | awk '{print $0}'
), pero parece que top
siempre 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_stat
función.fuente
Hay algún ejemplo en la web que muestra cómo leer
/proc/pid/stat
en C.Puede leer
utime
ostime
valores en dos momentos distintos y calcular las estadísticas de utilización de CPU deseadas. (Supongo que tambiéntop
usa estos datos en bruto).(Olvidé: esto es específico de Linux).
fuente