Windows 7 Shell:获取进程的累积页面错误

Windows 7 Shell:获取进程的累积页面错误

我想从 Windows Shell 读取进程的(累积)页面错误,以决定何时终止它。该进程将动态启动。

我找到了杀戮部分(例如这里:如何在 Windows 上通过进程名称自动监视和终止进程),但我找不到读取页面错误的方法。我尝试使用 Windows 资源工具包中的 pfmon.exe(安装了 rktools.exe,尽管它引发了不兼容警告)和 taskmgr,它可以工作 - 我尝试使用 MathKernel(有问题的进程,在我将其添加到 PATH 之后),pfmon 说它不受支持。

我知道任务列表,但它只显示 CPU 时间和内存使用情况。

还有其他方法可以读取页面错误吗?任务管理器可以以某种方式自动使用吗?

背景:

这与我关于 Mathematica 中的一个问题的帖子有关这里我找不到解决方案(我尝试了那里的 1 个答案)。我的脚本运行 8 个并行的 Mathematica 内核进行计算,计算大约需要 10 个小时,有时其中一两个会阻塞。我已经为每次计算重新启动它们,但行为仍然存在。目前,我定期使用任务管理器检查它们并终止积累大量页面错误的 MathKernel.exe 进程。请注意,当其他 MathKernel.exe 进程仍在运行时,处理器时间/负载和内存使用率没有帮助。这就是我需要页面错误的原因 - 我想每分钟比较所有 8 个进程,如果一个进程的页面错误是另一个进程的 10 倍,我想终止它。

答案1

还有其他方法可以读取这些数据吗?

您可以使用列表Windows 系统内部

记忆缩写键

所有内存值均以 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

faults值是页面错误的总次数。

您将需要想要监控的进程的进程 ID。

示例输出:

> 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

您可以使用批处理文件或 PowerShell 脚本来解析此输出。

免责声明

我不隶属于Windows 系统内部无论如何,我只是他们软件的最终用户。

相关内容