f
frendguo.

Windows 上如何查看某进程中线程在 cpu 核心的分布

背景 最近,遇到一个应用卡顿的问题,最终是由于主要计算的线程被调度到了 E 核上去了,最终换到 P 核上就好了。 关于 Intel 混合架构中的 P 核和 E 核,可以看:https://www.intel.com/content/www/us/en/gaming/resources/how hybrid design

目录
背景收集信息通过 xperf 收集通过 WPR 收集分析数据总结

背景#

最近,遇到一个应用卡顿的问题,最终是由于主要计算的线程被调度到了 E 核上去了,最终换到 P 核上就好了。

| 关于 Intel 混合架构中的 P 核和 E 核,可以看:https://www.intel.com/content/www/us/en/gaming/resources/how-hybrid-design-works.html

那我要怎么来观察自己的应用线程在 CPU 上的分布情况呢?

这就需要请出我们强大的 WPT(Windows Performance Toolkit)了。

PS:之前介绍过 如何通过 WPT 来分析 Windows 启动过程

收集信息#

收集信息有两种方式,一种是通过 WPR 来收集,另外也可以通过 xperf 来收集。

通过 xperf 收集#

管理员权限启动终端,启动 xperf

text
xperf -on base+dispatcher+profile -stackwalk profile

参数解释
-on base+dispatcher+profile
-on:启动事件跟踪。
base:启用基本事件收集,包含基本的进程和线程信息。
dispatcher:启用线程调度器事件收集,记录线程的创建、结束、上下文切换等事件。这是分析线程在不同 CPU 核心上调度情况的关键。
profile:启用 CPU 采样(Profile)事件,以固定频率采样 CPU 的使用情况。此事件会记录在特定时间点上,哪个线程在哪个 CPU 核心上运行,以及其调用堆栈。这对于查看线程在各核心上的分布和性能瓶颈非常有用。

-stackwalk profile
-stackwalk:启用堆栈跟踪,以便在采样事件中记录完整的调用堆栈。
profile:指定在 profile 事件上启用堆栈跟踪。这样可以捕获到每次 CPU 采样时,线程调用堆栈的信息,以便后续分析调用路径和性能瓶颈。

然后运行你的应用,运行关键操作后,停止采样并生成 output.etl 文件

text
xperf -d .\Desktop\output.etl

然后在桌面上就能看到对应的文件了。

xperf 命令参考:https://learn.microsoft.com/en-us/windows-hardware/test/wpt/xperf-command-line-reference

通过 WPR 收集#

WPR 通常采取 UI 的方式来收集,相对比较简单。

打开 Windows Performance Recorder ,在 More options 中勾选上 CPU usage 即可。

如下图所示

Snipaste_2024-10-30_16-14-37

然后点击 start 即可。

然后运行你的应用,运行关键操作后,点击 Stop 即可结束录制,并保存日志。

分析数据#

分析我们采用 WPA(Windows Performance Analyzer)来进行分析。

  1. 通过 WPA 打开刚才采集到的文件

    Snipaste_2024-10-30_16-24-44
  2. 双击CPU Usage(Sampled) 就可以看到 cpu 使用情况了

  3. 然后在表格左上角,选择Utilization by CPU,按 cpu 来查看使用率

    Snipaste_2024-10-30_16-26-07
  4. 在表格头上打开右击菜单,在 More Columns 中勾选 Process NameThread Id

    Snipaste_2024-10-30_16-26-48
  5. CPU 列拉到 Process NameThread Id 列后面

    Snipaste_2024-10-30_16-30-51
  6. 再筛选到你需要观察的进程,一次展开线程和 cpu,就可以看到跑在哪些 cpu 核心上面啦。

    Snipaste_2024-10-30_16-32-49

总结#

WPT 中可以看到很多信息,可以多用用~

── END ──
↑ Back to topSubscribe
← NEWER
如何 DIY 申报 BOI
OLDER →
如何通过微软账号登录远程桌面

还没有评论。下面留下第一条吧。

+ 留个评论
提交后由管理员审核 · 通常 24h 内显示
Jul 25Windows 权限相关概念解析4m →Mar 25Windows是如何区分互联网下载文件和本地文件的6m →Feb 25如何低成本的获取到应用卡顿情况3m →