我如何才能找出导致特定进程/整个系统速度变慢的瓶颈?

我如何才能找出导致特定进程/整个系统速度变慢的瓶颈?

给定一个特定的正在运行的进程,有没有办法找出哪个硬件元素是其当前运行的瓶颈?换句话说,其当前的计算是 CPU 密集型、GPU 密集型、内存密集型、IO 密集型等?

适用于 Windows XP 的答案是更好的选择,但欢迎所有答案。

编辑:我正在考虑那些占用绝大多数系统资源的进程;因此,能够帮助我找到整​​个系统当前瓶颈(例如,哪个元素正在最努力地工作,而其他元素正在休息)的解决方案也很好。

编辑2:有人问过我这个问题,我的回答是

打开任务管理器并选择查看应用程序的页面错误 - 非常高的计数表明您没有足够的物理内存。检查 CPU 利用率 - 如果它持续处于 100%,则表明它可能对于此实时应用程序来说速度不够快。

我本来会这么做,但感觉有点业余,所以我正在寻找更精确、更完整的方法来识别罪犯。

答案1

您可以使用 Microsoft XPERF 工具检查堆栈并查找瓶颈。您只能在 Vista/7(或 Server 2008)上查看结果,但可以在 XP 上运行配置文件工具。 猪能飞有一些关于使用 XPERF 进行堆栈遍历的非常好的文章。

我们用它来查找启动速度的瓶颈,并最终向公司展示证据以删除一些在启动时占用过多磁盘 IO 的工具。

答案2

您需要使用分析器。您可能还需要访问程序的源代码,或者至少访问调试符号。

相关内容