it-swarm-pt.tech

Acompanhamento de CPU e uso de memória por processo

Eu suspeito que um dos meus aplicativos consuma mais ciclos de CPU do que eu quero. O problema é que isso acontece em rajadas, e apenas olhando para o gerenciador de tarefas não me ajuda, pois mostra apenas o uso imediato.

Existe uma maneira (no Windows) para rastrear o histórico de uso de CPU e memória para algum processo. Por exemplo. Vou começar a rastrear o "firefox" e, depois de uma hora, veremos um gráfico do uso da CPU e da memória durante essa hora.

Eu estou procurando uma ferramenta pronta ou uma forma programática de conseguir isso.

147
Eli Bendersky

Apenas digite perfmon em Start > Run e pressione enter. Quando a janela Desempenho estiver aberta, clique no sinal + para adicionar novos contadores ao gráfico. Os contadores são diferentes aspectos de como o seu PC funciona e são agrupados por similaridade em grupos chamados "Objeto de Desempenho".

Para suas perguntas, você pode escolher os objetos de desempenho "Process", "Memory" e "Processor". Você pode ver esses contadores em tempo real

Você também pode especificar o utilitário para salvar os dados de desempenho para sua inspeção posteriormente. Para fazer isso, selecione "Logs e alertas de desempenho" no painel à esquerda. (Está bem sob o console do System Monitor, que nos fornece os contadores acima mencionados. Se não estiver lá, clique em "Arquivo"> ​​"Adicionar/remover snap-in", clique em Adicionar e selecione "Logs e alertas de desempenho" na lista. ".) Nos" Logs e Alertas de Desempenho ", crie uma nova configuração de monitoramento em" Logs de Contador ". Depois, você pode adicionar os contadores, especificar a taxa de amostragem, o formato de log (texto simples ou binário) e localização do log.

156
Martin08

Process Explorer pode mostrar o tempo total da CPU obtido por um processo, bem como um gráfico de histórico por processo.

40
Niall

Usando o perfmon.exe, tentei usar o contador "Bytes privados" em contadores "Processo" para rastrear o uso da memória e funciona bem.

15
CppNoob

talvez você possa usar isso. Ele deve funcionar para você e reportará o tempo do processador para o processo 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

Eu concordo, perfmon.exe permite que você adicione contadores (clique direito no painel da direita) para qualquer processo que você deseja monitorar.

Objeto de desempenho: processo Marque "Selecionar instâncias da lista" e selecione o firefox.

7
Ady Romantika

O WMI é o Windows Management Instrumentation e está incorporado em todas as versões recentes do Windows. Ele permite que você programe programaticamente itens como uso da CPU, E/S de disco e uso da memória.

O Perfmon.exe é um front end de GUI para essa interface e pode monitorar um processo, gravar informações em um log e permitir a análise do log após o fato. Não é o programa mais elegante do mundo, mas faz o trabalho. 

6
doflynn

O Process Lasso é projetado mais para automação de processos e otimização de classe de prioridade, não para gráficos. Dito isso, faz oferecer histórico de utilização de CPU por processo (desenhado como uma linha branca no gráfico), mas N&ATILDE;O oferecer histórico de utilização de memória por processo. 

ISENÇÃO DE RESPONSABILIDADE: Eu sou o autor do Process Lasso, mas não estou realmente endossando isso aqui - já que existem soluções melhores (perfmon sendo o melhor).

A melhor coisa é o Windows Vista + Resource e Performance Monitor. Ele pode rastrear o uso de acessos de CPU, memória, rede e disco por processos ao longo do tempo. É um ótimo utilitário geral de informações do sistema que deveria ter sido criado há muito tempo. A menos que eu esteja enganado, ele pode rastrear a utilização da CPU e da memória por processo ao longo do tempo (entre outras coisas listadas).

2
dyasta

Embora eu não tenha tentado isso, ProcDump parece ser uma solução melhor.

Descrição do site:

O ProcDump é um utilitário de linha de comando cuja finalidade principal é monitorar um aplicativo para picos de CPU e gerar despejos de memória durante um pico que um administrador ou desenvolvedor pode usar para determinar a causa do pico. ProcDump também inclui monitoração de janela suspensa (usando a mesma definição de um travamento de janela que o Windows e o Gerenciador de Tarefas usam), monitoramento de exceção não tratada e pode gerar despejos com base nos valores dos contadores de desempenho do sistema. Ele também pode servir como um utilitário de despejo de processo geral que você pode incorporar em outros scripts.

2
sean

Você pode querer dar uma olhada em Process Lasso .

1
maksa

Você também pode tentar usar um script C #/Perl/Java para obter os dados de utilização usando os Comandos WMI, e abaixo estão as etapas para isso.

Precisamos executar 2 WMI Select Queries e aplicar a fórmula de utilização% da CPU

1. Para recuperar o número total de processos lógicos 

select NumberOfLogicalProcessors from Win32_ComputerSystem

2. Para recuperar os valores de PercentProcessorTime, TimeStamp_Sys100NS (a fórmula de utilização da CPU deve ser aplicada, obtenha a porcentagem de utilização real) e WorkingSetPrivate (RAM) mínimo de 2 vezes com um intervalo de suspensão de 1 segundo

select * from Win32_PerfRawData_PerfProc_Process where IDProcess=1234

3. Aplicar fórmula de utilização% da CPU

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

p2 indicou PercentProcessorTime recuperado pela segunda vez, e p1 indicou o PercentProcessorTime recuperado pela primeira vez, t2 e t1 é para TimeStamp_Sys100NS.

Um exemplo de código Perl para isso pode ser encontrado no link http://www.craftedforeveryone.com/cpu-and-ram-utilization-of-an-application-using-Perl-via-wmi/

Essa lógica se aplica a toda linguagem de programação que suporta consultas WMI

1
Kaarthikeyan

Hmm, eu vejo que Process Explorer pode fazê-lo, embora seus gráficos não sejam muito convenientes. Ainda procurando maneiras alternativas/melhores de fazer isso.

1
Eli Bendersky

Perfmon.exe é construído em janelas.

1
SaaS Developer

No Windows 10, o Gerenciador de Tarefas pode mostrar horas de CPU cumulativas. Basta ir para a guia "Histórico de aplicativos" e "Excluir histórico de uso". Agora deixe as coisas funcionando por uma ou duas horas:

Windows 10 Cumulative CPU time

O que isso NÃO faz é dividir o uso em navegadores por guia. Muitas vezes, guias inativas farão uma tremenda quantidade de trabalho, com cada aba aberta usando energia e tornando seu PC lento.

1
Bryce

Eu uso o taskinfo para o gráfico de histórico da velocidade da CPU/RAM/IO. http://www.iarsn.com/taskinfo.html

Mas rajadas de falta de resposta, soa mais como tempo de interrupção devido a um falsa unidade HD/SS. 

0
Terrik