Seguimiento del uso de CPU y memoria por proceso

Sospecho que una de mis aplicaciones consume más ciclos de CPU de lo que yo quiero. El problema es que ocurre en ráfagas, y simplemente mirar al administrador de tareas no me ayuda, ya que solo muestra uso inmediato.

¿Hay alguna manera (en Windows) de rastrear el historial de uso de CPU y memoria para algún proceso? Por ejemplo, comenzaré a rastrear “firefox”, y después de aproximadamente una hora veré un gráfico de su CPU y uso de memoria durante esa hora.

Estoy buscando ya sea una herramienta preparada o una forma programática para lograr esto.

Simplemente escriba perfmon en Start > Run y presione enter. Cuando la ventana Rendimiento está abierta, haga clic en el signo + para agregar nuevos contadores al gráfico. Los contadores son aspectos diferentes de cómo funciona su PC y se agrupan por similitud en grupos llamados “Objeto de rendimiento”.

Para sus preguntas, puede elegir los objetos de rendimiento “Proceso”, “Memoria” y “Procesador”. Entonces puedes ver estos contadores en tiempo real

También puede especificar la utilidad para guardar los datos de rendimiento para su inspección más tarde. Para hacer esto, seleccione “Registros y alertas de rendimiento” en el panel izquierdo. (Está justo debajo de la consola del Monitor del sistema que nos proporciona los contadores mencionados anteriormente. Si no está allí, haga clic en “Archivo”> ​​”Agregar / eliminar complemento”, haga clic en Agregar y seleccione “Registros y alertas de rendimiento” en la lista “.) Desde” Registros y alertas de rendimiento “, cree una nueva configuración de supervisión en” Registros de contador “. Luego puede agregar los contadores, especificar la frecuencia de muestreo, el formato de registro (texto binario o sin formato) y la ubicación del registro.

Process Explorer puede mostrar el tiempo total de CPU tomado por un proceso, así como un gráfico de historial por proceso.

Usando perfmon.exe, he intentado usar el contador “Bytes privados” debajo de los contadores de “Proceso” para rastrear el uso de la memoria y funciona bien.

tal vez puedas usar esto. Debería funcionar para usted e informará el tiempo del procesador para el proceso especificado.

 @echo off : Rich Kreider  : report processor time for given process until process exits (could be expanded to use a PID to be more : precise) : Depends: typeperf : Usage: foo.cmd  set process=%~1 echo Press CTRL-C To Stop... :begin for /f "tokens=2 delims=," %%c in ('typeperf "\Process(%process%)\%% Processor Time" -si 1 -sc 1 ^| find /V "\\"') do ( if %%~c==-1 ( goto :end ) else ( echo %%~c%% goto begin ) ) :end echo Process seems to have terminated. 

Acepto, perfmon.exe le permite agregar contadores (haga clic con el botón derecho en el panel derecho) para cualquier proceso que desee monitorear.

Objeto de rendimiento: Verificación de proceso “Seleccionar instancias de la lista” y seleccionar Firefox.

WMI es Windows Management Instrumentation, y está integrado en todas las versiones recientes de Windows. Le permite realizar un seguimiento programático de cosas como el uso de CPU, E / S de disco y uso de memoria.

Perfmon.exe es una interfaz gráfica de usuario para esta interfaz, y puede supervisar un proceso, escribir información en un registro y le permite analizar el registro después del hecho. No es el progtwig más elegante del mundo, pero cumple su función.

Process Lasso está diseñado más para la automatización de procesos y la optimización de clase de prioridad, no gráficos. Dicho esto, ofrece un historial de utilización de CPU por proceso (dibujado como una línea blanca en el gráfico) pero NO ofrece un historial de utilización de la memoria por proceso.

DESCARGO DE RESPONSABILIDAD: Soy el autor de Process Lasso, pero en realidad no lo estoy respaldando aquí, ya que hay mejores soluciones (perfmon es la mejor).

Lo mejor que se puede ver es el Monitor de rendimiento y recursos de Windows Vista +. Puede rastrear el uso de los accesos de CPU, memoria, red y disco por procesos a lo largo del tiempo. Es una gran utilidad de información general del sistema que debería haber sido creada hace mucho tiempo. A menos que me equivoque, puede rastrear el uso de memoria y CPU por proceso a lo largo del tiempo (entre las otras cosas enumeradas).

Aunque no lo he probado, ProcDump parece una mejor solución.

Descripción del sitio:

ProcDump es una utilidad de línea de comandos cuyo propósito principal es monitorear una aplicación para picos de CPU y generar volcados de emergencia durante un pico que un administrador o desarrollador puede usar para determinar la causa del pico. ProcDump también incluye monitoreo de ventana colgada (usando la misma definición de un locking de ventana que usan Windows y el Administrador de tareas), supervisión de excepciones no controlada y puede generar volcados basados ​​en los valores de los contadores de rendimiento del sistema. También puede servir como una utilidad de volcado de proceso general que puede incrustar en otras secuencias de comandos.

Hmm, veo que Process Explorer puede hacerlo, aunque sus gráficos no son demasiado convenientes. Todavía estoy buscando alternativas / mejores formas de hacerlo.

Perfmon.exe está integrado en Windows.

Es posible que desee echar un vistazo a Process Lasso .

Yo uso Taskinfo para el historial gráfico de la velocidad de CPU / RAM / IO. http://www.iarsn.com/taskinfo.html

Pero las ráfagas de falta de respuesta suenan más como el tiempo de interrupción debido a una unidad HD / SS defectuosa.

También puede intentar usar un script C # / Perl / Java para obtener los datos de utilización usando Comandos WMI, y debajo están los pasos para ello.

Necesitamos ejecutar 2 consultas de selección de WMI y aplicar la fórmula de utilización de CPU%

1. Para recuperar el número total de procesos lógicos

 select NumberOfLogicalProcessors from Win32_ComputerSystem 

2. Para recuperar los valores de PercentProcessorTime, TimeStamp_Sys100NS (la fórmula de utilización de CPU se ha aplicado obtenga el porcentaje de utilización real) y WorkingSetPrivate (RAM) mínimo de 2 veces con un intervalo de suspensión de 1 segundo

 select * from Win32_PerfRawData_PerfProc_Process where IDProcess=1234 

3. Aplicar la fórmula de utilización CPU%

 CPU%= ((p2-p1)/(t2-t1)*100)/NumberOfLogicalProcessors 

p2 indicó PercentProcessorTime recuperado por segunda vez, y p1 indicó que PercentProcessorTime recuperó por primera vez, t2 y t1 es para TimeStamp_Sys100NS.

Se puede encontrar un código de Perl de muestra en el enlace http://www.craftedforeveryone.com/cpu-and-ram-utilization-of-an-application-using-perl-via-wmi/

Esta lógica se aplica a todo el lenguaje de progtwigción que admite consultas de WMI