Shell do Windows 7: obtenha falhas de página acumuladas no processo

2

Eu quero ler os pagefaults (acumulados) de um processo do shell do Windows para decidir quando matá-lo. O processo começará dinamicamente.

Eu encontrei a parte da morte (por exemplo, aqui: Como monitorar e matar um processo automaticamente no Windows pelo nome do processo ), mas não encontrei nenhuma maneira de ler as falhas da página. Eu tentei pfmon.exe dos kits de recursos do Windows (rktools.exe instalado embora levantou um aviso de incompatibilidade) com taskmgr e funciona - eu tentei com MathKernel (o processo em questão e depois que eu adicionei a PATH) e pfmon diz que não é suportado.

Eu sei de lista de tarefas, mas isso só me mostra tempo de CPU e uso de memória.

Existe outra maneira de ler falhas de página? O gerenciador de tarefas pode ser usado de alguma forma automaticamente?

Antecedentes:

Isso está relacionado ao meu post sobre um problema no Mathematica aqui para o qual não encontrei uma solução (tentei a resposta 1 lá). Meu script executa 8 Kernels paralelos do Mathematica para uma computação que leva ~ 10 horas e, às vezes, um ou dois deles bloqueiam. Eu já os reiniciei para cada cálculo, mas o comportamento prevalece. No momento eu checo regularmente o gerenciador de tarefas e mato os processos MathKernel.exe que acumulam muitas falhas de página. Observe que o tempo / carga do processador e o uso de memória não são úteis enquanto os outros processos MathKernel.exe ainda estão em execução. É por isso que eu preciso das falhas de página - eu quero comparar todos os 8 processos a cada minuto e se um tem 10 vezes as falhas de página do outro eu quero matá-lo.

    
por Kab 18.07.2017 / 13:50

1 resposta

2

Existe outra maneira de ler esses dados?

Você pode usar pslist de Windows Sysinternals :

Memory Abbreviation Key

All memory values are displayed in KB.

Pri: Priority
Thd: Number of Threads
Hnd: Number of Handles
VM: Virtual Memory
WS: Working Set
Priv: Private Virtual Memory
Priv Pk: Private Virtual Memory Peak
Faults: Page Faults
NonP: Non-Paged Pool
Page: Paged Pool
Cswtch: Context Switches

O valor faults é o número total de falhas de página.

Você precisará dos IDs de processo dos processos que deseja monitorar.

Exemplo de saída:

> pslist -m 6272

PsList v1.4 - Process information lister
Copyright (C) 2000-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

Process memory detail for HAL:

Name                Pid      VM      WS    Priv Priv Pk   Faults   NonP Page
firefox            6272 2707156 1038508 1015532 1191600 34880695    194  596

Você pode usar um arquivo em lotes ou um script do PowerShell para analisar essa saída.

Aviso de isenção

Eu não sou afiliado com Windows Sysinternals de qualquer forma, sou apenas um usuário final de software.

    
por 18.07.2017 / 14:06