como se documenta en proc(5), en el archivo /proc/(pid)/stat
usted tiene los campos:
utime %lu
Cantidad de tiempo que este proceso ha sido programado en modo de usuario, medido en ciclos de reloj (dividir por sysconf (_SC_CLK_TCK). Este incluye el tiempo de invitado, tiempo_usuario (tiempo dedicado a ejecutar una CPU virtual, consulte a continuación), de modo que las aplicaciones que son desconoce el campo de tiempo de invitado do no pierde ese tiempo de sus cálculos .
stime %lu
Cantidad de tiempo que este proceso se ha programado en modo kernel , medida en ciclos de reloj (dividir por sysconf (_SC_CLK_TCK).
Para llegar uso de la CPU para un proceso específico, use esos campos. El proceso toplevel agregará el uso de la CPU en todos los hilos, para un desglose por hilo, puede encontrar los otros hilos en /proc/(pid)/task
.
Si prefiere ser notificado cuando C El tiempo de PU excede cierto umbral, puede usar clock_getcpuclockid para obtener un control de su reloj de tiempo de CPU, luego timer_create o timerfd para recibir notificaciones cuando llegue a un nivel específico. Sin embargo, tenga en cuenta que los temporizadores de cputime de proceso cruzado son una característica opcional en la especificación POSIX y pueden no ser compatibles (no lo he probado).
La carga es una métrica de todo el sistema, no de proceso. ¿Quisiste decir procesar el uso de la CPU? –
¿estás seguro de que la información no está allí? 'find/proc/1' por ejemplo, hay MUCHAS cosas, ¿lo pasó todo? –
Lo hice todo :) – Mark