2011-12-14 22 views
5

Quiero obtener el uso general total de la CPU para una aplicación en C, el uso total de la CPU como lo obtenemos en el Administrador de Tareas ... Quiero saber ... para Windows y Linux :: actual Uso total de la CPU por todos procesos ..... como vemos en el administrador de tareas.¿Cómo obtener el uso de la CPU en C?

+2

qué sistema operativo? ¿Desea saber la respuesta para su proceso o para algún otro proceso? –

+0

bueno, en Windows (7 para ser precisos) ... Quiero saber ... el uso actual total de la CPU por todos los procesos ..... como vemos en el administrador de tareas .... – Ronin

+0

Edite la pregunta para reflejar esta nueva información. –

Respuesta

10

Ésta es específica de la plataforma:

  • En Windows, puede utilizar la función GetProcessTimes().
  • En Linux, puede simplemente usar clock().

Se pueden usar para medir la cantidad de tiempo de CPU que se toma entre dos intervalos de tiempo.

EDIT:

Para obtener el consumo de CPU (en porcentaje), tendrá que dividir el tiempo total de CPU por el # de núcleos lógicos que ve el sistema operativo, y luego se divide por el total de la pared tiempo -cristales:

% CPU usage = (CPU time)/(# of cores)/(wall time) 

conseguir el # de núcleos lógicos también es específico de la plataforma:

+0

lo que sugiere es :: Recupera información de tiempo para el proceso especificado. .... pero necesito obtener el uso total de CPU (porcentaje) - como vemos en el administrador de tareas ... ¿puedes ayudar? – Ronin

+0

Se pueden usar para darle el tiempo de CPU utilizado. Para obtener el% de uso de la CPU, tendrá que dividirlo por el número de núcleos lógicos que ve el sistema operativo. – Mysticial

+0

Para obtener el uso de% de CPU que necesitaría (tiempo de CPU/n. ° de núcleos */tiempo de reloj transcurrido *), pero correcto. –

1

Bajo POSIX, que desea getrusage (2) 's campo ru_utime. Utilice RUSAGE_SELF solo para el proceso de llamada, y RUSAGE_CHILDEN para todos los hijos terminados y esperados (2) ed-upon. Linux también admite RUSAGE_THREAD solo para el hilo de llamada. Use ru_stime si desea la hora del sistema, que se puede sumar con ru_utime para el tiempo total que se ejecuta activamente (no el tiempo de pared).

1

Suele ser específico del sistema operativo.

Puede usar la función clock, devolviendo un clock_t (algún tipo entero, como quizás long). En los sistemas Linux, mide el tiempo de CPU en microsegundos.

+0

'clock_t' es un tipo * aritmético *, por lo que también podría ser' double' o 'float'. – dreamlax

-1

eso es exactamente lo que estaba buscando. Manipulándolo en mi camino, lo ejecuto con éxito.

Get total CPU usage