Windows 7 Shell: récupère les erreurs de page accumulées dans les processus

2

Je veux lire les défauts de page (accumulés) d'un processus à partir du shell Windows pour décider quand le tuer. Le processus va démarrer dynamiquement.

J'ai trouvé la partie meurtrière (par exemple ici: Comment surveiller et tuer automatiquement un processus sur Windows par nom de processus ) mais je n'ai trouvé aucun moyen de lire les erreurs de page. J'ai essayé pfmon.exe à partir des kits de ressources Windows (rktools.exe installé bien qu'il ait déclenché un avertissement d'incompatibilité) avec taskmgr et cela fonctionne - je l'ai essayé avec MathKernel (le processus en question et après l'avoir ajouté à PATH) et pfmon le dit. n'est pas pris en charge.

Je connais la liste des tâches, mais elle ne montre que l’utilisation du temps et de la mémoire du processeur.

Y a-t-il un autre moyen de lire les fautes de page? Le gestionnaire de tâches peut-il être utilisé automatiquement?

Contexte:

Ceci est lié à mon post sur un problème dans Mathematica ici pour que je ne pouvais pas trouver une solution (j'ai essayé la réponse y 1). Mon script utilise 8 noyaux Mathematica parallèles pour un calcul qui prend environ 10 heures et parfois un ou deux blocs. Je les redémarre déjà pour chaque calcul, mais le comportement prévaut. Pour le moment, je vérifie régulièrement avec le gestionnaire de tâches à leur sujet et tue les processus MathKernel.exe qui accumulent de nombreuses erreurs de page. Notez que le temps processeur / charge et l'utilisation de la mémoire ne sont pas utiles pendant que les autres processus MathKernel.exe sont toujours en cours d'exécution. C'est pourquoi j'ai besoin des fautes de page - je veux comparer les 8 processus, disons à chaque minute et si l'un a 10 fois plus de fautes de page que l'autre, je veux le tuer.

Kab
la source

Réponses:

1

Y a-t-il une autre façon de lire ces données?

Vous pouvez utiliser pslist depuis Windows Sysinternals :

Clé d'abréviation de mémoire

Toutes les valeurs de la mémoire sont affichées en Ko.

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

La faultsvaleur correspond au nombre total de défauts de page.

Vous aurez besoin des identifiants de processus des processus que vous souhaitez surveiller.

Exemple de sortie:

> 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

Vous pouvez utiliser un fichier de commandes ou un script PowerShell pour analyser cette sortie.

Avertissement

Je ne suis en aucun cas affilié à Windows Sysinternals , je ne suis qu'un utilisateur final de leurs logiciels.

DavidPostill
la source
Merci DavidPostill! Je l'ai essayé et il fait ce que je veux. Je posterai mon fichier de commandes dans l'autre question liée.
Kab
Je n'ai pas non plus besoin d'utiliser le PID. Je peux simplement utiliser "pslist -m -nobanner MathKernel" et il trouvera tous les processus.
Kab
@Kab Correct. Ma réponse était juste une illustration. Vous devez identifier les processus en quelque sorte ...
DavidPostill