【问题标题】:How to gather CPU utilization sampling with xperf (Windows Performance Toolkit)如何使用 xperf 收集 CPU 利用率采样(Windows 性能工具包)
【发布时间】:2015-04-03 14:48:19
【问题描述】:

我想分析长流程(6-8 小时)的性能。我需要有关已创建/已完成进程(使用命令行)和 CPU 利用率的信息。

我发现,Windows 性能分析器 (wpa.exe/xperfview.exe) 是很好的分析工具。我创建性能数据收集器,选择提供程序“Windows 内核跟踪”,关键字“进程”并获取有关进程的信息。

但我找不到如何通过采样收集有关 CPU 利用率的信息。 我知道,那个

xperf.exe -on Base

收集CPU信息,但是生成的信息太多...

我还可以使用性能计数器将 CPU 利用率收集为 *.blg 文件,但我无法将此文件加载到 Windows 性能分析器中。 :(

有什么想法吗?

【问题讨论】:

    标签: performance performancecounter etw xperf windows-performance-analyzer


    【解决方案1】:

    您可以通过命令提示符 (cmd.exe) 使用 Stacks 获取 CPU 采样,running as admin

    xperf -on PROC_THREAD+LOADER+PROFILE -stackwalk profile -buffersize 1024 -MaxFile 1024 -FileMode Circular && timeout -1 && xperf -d C:\HighCPUUsage.etl
    

    这将创建一个最大大小为 1GB 的文件。 Xperf/ETW 不适用于长期分析,因为文件变得太大。因此,运行命令,如果您在 Taskmgr 中看到高 CPU 使用率,请按 键停止记录。在 WPA.exe 中打开 ETL,现在您可以看到最后几分钟。

    【讨论】:

    • 此命令每秒生成约 2MB。我需要收集信息约 6 小时。所以最后我会有 ~40GB .etl 文件(当然应该增加 MaxFile),我几乎无法加载到 wpa.exe....
    • 将问题分成更小的部分。照我说的做,运行一个较短的跟踪,找出导致 CPU 使用率的原因。现在在您的代码中修复此问题并再次观察 CPU 使用情况。如果您仍有问题,请重复此操作,直到解决所有问题。
    • 正如我所说的那样 - 它产生了太多信息。这不是代码问题 - 我想快速了解夜间构建过程的性能。我不能花 40 天(测量程序 40 次)进行快速调查。
    • 再次,将问题分成更小的部分。捕获几个较小的跟踪并分析 CPU 使用率,看看是否相同。
    • 好的。当我有额外的 40 天时,我记得你的建议。
    猜你喜欢
    • 2019-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多