it-swarm-es.tech

Seguimiento de CPU y uso de memoria por proceso.

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

¿Hay alguna forma (en Windows) de rastrear el 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 del uso de la CPU y la memoria durante esa hora.

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

149
Eli Bendersky

Simplemente escriba perfmon en Start > Run y presione enter. Cuando la ventana de Rendimiento esté abierta, haga clic en el signo + para agregar nuevos contadores al gráfico. Los contadores son diferentes aspectos 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 podrás ver estos contadores en tiempo real.

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

157
Martin08

Process Explorer puede mostrar el tiempo total de CPU consumido por un proceso, así como un gráfico histórico por proceso.

40
Niall

Usando perfmon.exe, he intentado usar el contador "Bytes privados" en los contadores de "Proceso" para el seguimiento del uso de memoria y funciona bien.

16
CppNoob

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

@echo off
: Rich Kreider <[email protected]>
: 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.
10
Rich Kreider

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

Objeto de rendimiento: proceso Compruebe "Seleccionar instancias de la lista" y seleccione Firefox.

7
Ady Romantika

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

Perfmon.exe es un front-end de GUI 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.

6
doflynn

Process Lasso está diseñado más para la automatización de procesos y la optimización de la clase de prioridad, no gráficos. Dicho esto, hace ofrece el historial de utilización de CPU por proceso (dibujado como una línea blanca en el gráfico) pero NO ofrece el historial de utilización de 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 de todo es Windows Vista + Monitor de recursos y rendimiento. Puede realizar un seguimiento del uso de los accesos de la CPU, la memoria, la red y el disco por procesos a lo largo del tiempo. Es una gran utilidad general de información del sistema que debería haberse creado hace mucho tiempo. A menos que me equivoque, puede realizar un seguimiento de la CPU y la utilización de la memoria por proceso a lo largo del tiempo (entre otras cosas enumeradas).

2
dyasta

También puede intentar usar una secuencia de comandos C #/Perl/Java para obtener los datos de utilización mediante los comandos WMI, y a continuación se encuentran los pasos para ello.

Necesitamos ejecutar 2 consultas de selección de WMI y aplicar la fórmula de utilización del% 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 obtener el porcentaje de utilización real) y WorkingSetPrivate (RAM) mínimo de 2 veces con un intervalo de espera de 1 segundo

select * from Win32_PerfRawData_PerfProc_Process where IDProcess=1234

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

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

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

Puede encontrar un ejemplo de código Perl 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 admiten consultas WMI.

2
Kaarthikeyan

Aunque no he probado esto, ProcDump parece ser 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 detectar picos de CPU y generar volcados de caída durante un pico que un administrador o desarrollador puede usar para determinar la causa del pico. ProcDump también incluye supervisión de ventanas bloqueadas (con la misma definición de ventana que utilizan 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 otros scripts.

2
sean

Es posible que desee echar un vistazo a Process Lasso .

1
maksa

Hmm, veo que Process Explorer puedo hacerlo, aunque sus gráficos no son muy convenientes. Sigo buscando alternativas/mejores formas de hacerlo.

1
Eli Bendersky

Perfmon.exe está integrado en Windows.

1
SaaS Developer

Bajo 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 las cosas funcionando durante una hora o dos:

 Windows 10 Cumulative CPU time 

Lo que NO hace esto es desglosar el uso en los navegadores por pestaña. Muy a menudo las pestañas inactivas harán una gran cantidad de trabajo, con cada pestaña abierta usando energía y ralentizando tu PC.

1
Bryce

Uso taskinfo para el gráfico de historial de CPU/RAM/IO speed. http://www.iarsn.com/taskinfo.html

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

0
Terrik