【问题标题】:How do I figure out whether my process is CPU bound, I/O bound, Memory bound or如何确定我的进程是否受 CPU 限制、I/O 限制、内存限制或
【发布时间】:2011-05-14 22:18:47
【问题描述】:

我正在尝试加快编译我的应用程序所花费的时间,我正在调查的一件事是检查我可以将哪些资源(如果有)添加到构建机器以加快速度。为此,我如何确定是否应该投资更多 CPU、更多 RAM、更好的硬盘,或者该进程是否受到其他资源的约束?我已经看到了这个 (How to check if app is cpu-bound or memory-bound?) 并且正在寻找更多提示和指示。

到目前为止我已经尝试过:

  • 在构建机器上和我的本地机器上对过程进行计时。我发现构建机器花费的时间是我机器的两倍。

  • 运行“资源监视器”并查看进程运行时的 CPU 使用率、内存使用率和磁盘使用率 - 执行此操作时,我无法解释这些数字,主要是因为我不明白每一列的含义意味着以及如何将其转换为虚拟机与物理机以及多 CPU 机的含义。

【问题讨论】:

  • 从您的问题中很难判断:构建机是虚拟机吗?虚拟机的性能调整最终可能与物理机完全不同。
  • 是的,构建机是虚拟机。

标签: windows resources performance virtual-machine performancecounter


【解决方案1】:

Random-pausing 会告诉您 CPU 和 I/O 时间之间的百分比分配是多少。

基本上,如果您抓取 10 个随机堆栈快照,并且如果 80%(例如)的时间在 I/O 中,那么在 8+/-1.3 个样本上,堆栈将到达读取或写入系统例程缓冲。 如果您想要更高的精度,请采集更多样本。

【讨论】:

    【解决方案2】:

    开始 > 运行 > perfmon.exe

    Performance Monitor 可以绘制许多系统指标,您可以使用这些指标来推断瓶颈所在,包括 CPU 负载、io 操作、页面文件命中等。

    此外,Platform SDK 现在包含一个名为 XPerf 的工具,可以提供与开发人员更相关的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-10
      • 1970-01-01
      • 2013-02-05
      • 2017-09-06
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 2016-02-07
      相关资源
      最近更新 更多