在 Windows 上,是否有任何简单的方法可以将每个进程的 CPU 时间百分比随时间记录到文件中以供后续分析?
据我所知...
- 任务管理器显示每个进程的 %CPU,但仅限于视觉上 - 无法保存到文件。
- Perfmon 将允许我保存到一个文件,并且还将创建一个基于时间的文件(以指定的时间间隔拍摄快照) - 这几乎就是我想要的,只是据我所知它不能按进程细分 %CPU。
- Process Explorer 可以让我按进程进行细分,但它只会将文件保存为单个时间点的快照
所以,这些都不是我所需要的:我需要获取一个包含类似“每 15 秒按 CPU 排列的前 10 个进程,直到我停止监控”的文件,我需要这个是因为我有一台机器,该机器上的某个进程每天都会多次导致 CPU 使用率偶尔出现短暂峰值,我需要找出哪个进程是罪魁祸首。
有什么可以做到这一点吗,或者我错过了 perfmon 或 process explorer 的某些功能?
答案1
进程监控可以为您做到这一点。
您可能首先想要启用分析事件的收集:
然后,只需根据需要收集数据(您可能需要设置过滤器并启用删除已过滤的事件如果您计划长时间收集)。然后转到工具 -> 进程活动摘要:
现在,您将获得您记录的所有活动进程的列表,以及它们随时间推移的活动。
然后,您可以打开单个进程的详细信息(通过双击它)并检查图表中某些事件的时间戳:
答案2
根据“Der Hochstapler”的答案,一步一步的说明https://github.com/pestrela/smi_counter/blob/master/light_monitor/README.md
安装
- 下载过程监视器(https://docs.microsoft.com/en-us/sysinternals/downloads/procmon)
- 启动它(第一次),然后按顺序使用以下快捷方式:
配置:
- CTRL+E:停止捕获
- CTRL+X:删除数据包
- CTRL+R:重置过滤器
- 工具栏:
- 禁用工具栏最右侧的所有事件(即 4x 图标)所有类型的事件(标签栏最右侧的 4x 图标)
- 启用最后一类事件(标签栏上的最后一个图标 - 见图)
- 菜单:
- 过滤/丢弃已过滤的数据包 = 开启
- 选项/历史深度:1000 万
- 选项/分析事件关闭
捕获:
- CTRL+E:开始捕捉
- 非常重要:确认您每秒获得大约 300 个事件。
- 如果你得到更多,请再次检查过滤
- 为了测试目的,运行几秒钟的 CPU 密集型任务:
- 例如:powerMAX、cpu-z 基准测试标签等
- CTRL+E:停止捕捉
- CTRL+E:开始捕捉
分析:
- 工具/流程活动摘要
- 在新窗口中,按 CPU 排序
- 双击流程查看详细时间线
- 列详细信息,“用户时间”字符串
- 这将是累计的用户时间。在我的 8 逻辑核心机器上,每增加 1 秒的实际时间,就会增加 8 秒
- 工具/流程活动摘要
超出范围:CPU 停车 - 参见此链接禁用该.
配置导出:ProcmonConfiguration.pmc