Pregunta

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

¿Existe alguna forma (en Windows) de realizar un seguimiento del historial de uso de CPU y memoria para algún proceso?P.ej.Comenzaré a rastrear "firefox" y después de aproximadamente una hora veré un gráfico de su uso de CPU y memoria durante esa hora.

Estoy buscando una herramienta lista para usar o una forma programática de lograrlo.

¿Fue útil?

Solución

Sólo tipo 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 diferentes aspectos de cómo funciona tu PC y están agrupados por similitud en grupos llamados "Objeto de rendimiento".

Para sus preguntas, puede elegir los objetos de rendimiento "Proceso", "Memoria" y "Procesador".Luego podrás ver estos contadores en tiempo real.

También puede especificar la utilidad para guardar los datos de rendimiento para su inspección posterior.Para hacer esto, seleccione "Registros y alertas de rendimiento" en el panel de la izquierda.(Está justo debajo de la consola System Monitor que nos proporciona los contadores mencionados anteriormente.Si no está allí, haga clic en "Archivo" > "Agregar o quitar 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 monitoreo en "Registros de contador".Luego puede agregar los contadores, especificar la frecuencia de muestreo, el formato del registro (binario o texto sin formato) y la ubicación del registro.

Otros consejos

Explorador de procesos puede mostrar el tiempo total de CPU utilizado por un proceso, así como un gráfico histórico por proceso.

Usando perfmon.exe, intenté usar el contador "Bytes privados" en los contadores "Proceso" para rastrear el uso de 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 <rjk@techish.net>
: 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 <processname>

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.

Estoy de acuerdo, perfmon.exe le permite agregar contadores (haga clic derecho en el panel derecho) para cualquier proceso que desee monitorear.

Objeto de rendimiento:Proceso Verifique "Seleccione Instancias de la lista" y seleccione Firefox.

WMI es el Instrumental de administración de Windows y está integrado en todas las versiones recientes de Windows.Le permite realizar un seguimiento mediante programación de cosas como el uso de la CPU, la E/S del disco y el uso de la memoria.

Perfmon.exe es una interfaz gráfica de usuario para esta interfaz y puede monitorear un proceso, escribir información en un registro y permitirle analizar el registro después del hecho.No es el programa más elegante del mundo, pero hace el trabajo.

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

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

Lo mejor que existe es el Monitor de rendimiento y recursos de Windows Vista+.Puede rastrear el uso de los accesos a 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 haberse creado hace mucho tiempo.A menos que me equivoque, puede realizar un seguimiento de la utilización de la memoria y la CPU por proceso a lo largo del tiempo (entre las otras cosas enumeradas).

También puede intentar utilizar un script C#/Perl/Java para obtener los datos de utilización mediante comandos WMI, y a continuación se detallan los pasos para ello.

Necesitamos ejecutar 2 consultas de selección WMI y aplicar la fórmula de utilización de% 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 (se ha aplicado la fórmula de utilización de la CPU para obtener 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 de% de CPU

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

p2 indica PercentProcessorTime recuperado por segunda vez y p1 indica PercentProcessorTime recuperado por primera vez, t2 y t1 son para TimeStamp_Sys100NS.

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

Esta lógica se aplica a todos los lenguajes de programación que admitan consultas WMI.

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 objetivo principal es monitorear una aplicación en busca de picos de CPU y generar volcados de falla durante un pico que un administrador o desarrollador puede usar para determinar la causa del pico.ProcDump también incluye monitoreo de ventanas bloqueadas (usando la misma definición de ventana bloqueada que usan Windows y el Administrador de tareas), monitoreo de excepciones no controladas 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 procesos general que puede incrustarse en otros scripts.

Mmmm ya veo eso Explorador de procesos Puede hacerlo, aunque sus gráficos no son demasiado convenientes.Sigo buscando formas alternativas/mejores de hacerlo.

Perfmon.exe está integrado en Windows.

Quizás quieras echar un vistazo a Proceso de lazo.

En Windows 10, el Administrador de tareas puede mostrarle las horas de CPU acumuladas.Simplemente dirígete a la pestaña "Historial de aplicaciones" y "Eliminar historial de uso".Ahora deja todo funcionando durante una o dos horas:

Windows 10 Cumulative CPU time

Lo que esto NO hace es desglosar el uso en los navegadores por pestaña.Muy a menudo, las pestañas inactivas realizarán una enorme cantidad de trabajo, y cada pestaña abierta consumirá energía y ralentizará su PC.

Utilizo taskinfo para el gráfico histórico de la velocidad de CPU/RAM/IO.http://www.iarsn.com/taskinfo.html

Pero los estallidos de falta de respuesta suenan más a un tiempo de interrupción debido a una unidad HD/SS defectuosa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top