为什么 Xperf 和 ProcMon 显示的事件数量不同

问题描述 投票:0回答:0

目前我正在分析两个 Windows 应用程序,以了解为什么一个比另一个慢。

首先,我在启用 ProcMon 跟踪的情况下运行它们,发现每个应用程序触发“FlushBuffersFile”文件系统事件的次数相同(每个应用程序运行约 1000 次)。然后我注意到,平均而言,一个应用程序在每个 FlushBuffersFile 事件持续时间上花费的时间减少了 3 倍,所以我想通过 Xperf 详细了解这一点。

我以最大采样频率运行 Xperf,同时收集磁盘 IO 和文件 IO(在具有管理员模式的 CMD 中):

xperf -on DiagEasy+FILE_IO -SetProfInt 1221
(DiagEasy 是 PROC_THREAD+LOADER+DISK_IO+HARD_FAULTS+DPC+INTERRUPT+CSWITCH+PERF_COUNTER)

分析 Xperf 结果,我注意到它仍然为一个应用程序显示约 1000 个刷新事件,但对另一个应用程序仅显示约 50 个。所以,用 Xperf 分析它,我可能认为对于我的“快速”应用程序,Flush 事件只发生了 50 次,但我知道这是错误的,因为 ProcMon 说它发生了 ~1000 次。

这有解释吗?为什么我在“快速”应用程序的 Xperf 和 ProcMon 中看到不同数量的事件?而且,一般来说,Xperf 是理解为什么应用程序的 Flush 事件变慢或变快的好方法吗?

windows profiling xperf procmon
© www.soinside.com 2019 - 2024. All rights reserved.