在某些机器上,我的 .Net 应用程序在 CPU 使用率约为 10% 时处于空闲状态。我的第一个倾向是我的一个后台工作线程正在执行一些我不知道的指令,但我不知道如何按线程隔离 CPU 使用情况(任务管理器只是告诉我我的进程使用x个线程[通常在 30 左右],而不是哪些线程占用 CPU)。
我知道以编程方式我可以遍历本文中提到的线程,但我不知道这是否会给我所需的信息。是否有一个分析器(商业或其他)可以让我分析每个线程的 CPU 使用情况?
在某些机器上,我的 .Net 应用程序在 CPU 使用率约为 10% 时处于空闲状态。我的第一个倾向是我的一个后台工作线程正在执行一些我不知道的指令,但我不知道如何按线程隔离 CPU 使用情况(任务管理器只是告诉我我的进程使用x个线程[通常在 30 左右],而不是哪些线程占用 CPU)。
我知道以编程方式我可以遍历本文中提到的线程,但我不知道这是否会给我所需的信息。是否有一个分析器(商业或其他)可以让我分析每个线程的 CPU 使用情况?
我会推荐JetTrace dotTrace Performance。它会告诉你你的代码大部分时间都花在了哪里,以及线程。(它是商业的,但有 10 天的免费试用期。)
尝试 Microsoft 的 Perfview:http: //www.microsoft.com/en-us/download/details.aspx?id= 28567
您可以使用系统 ETW 事件来找出许多 CPU 利用率低的问题。
附加调试器并点击“中断”按钮怎么样?然后看看你的代码中是否有任何线程正在运行?
我支持 NominSim 的回答,并推荐Red Gate 的 ANTS Performance Profiler。过去帮了我很多。
他们确实有 14 天的免费试用版。