如何检查app是cpu绑定还是内存绑定?

时间:2010-07-01 09:00:30

标签: performance memory caching

我有一个应用程序只执行很少的计算CPU工作,但主要是内存访问(分配对象并移动它们,几乎没有数字或算术代码)。

如何测量我在内存访问延迟(由于缓存未命中)和CPU闲置时花费的时间份额?

我应该注意该应用程序正在Hyper-V来宾上运行;我不确定它会带来什么困难,但它可能会。

2 个答案:

答案 0 :(得分:2)

除非您在系统中内置延迟,否则只需在专用计算机上运行应用程序一段时间并检查CPU计数器。如果应用程序使用它可以访问的100%的CPU核心,则它受CPU限制。否则,它会花时间处理内存分配和IO等其他事情。

答案 1 :(得分:2)

您可以随时profile申请查看大部分时间的投放位置。

您可以通过这种方式了解应用程序的行为和数据访问模式。

如果您使用的是Linux,则可以使用各种可用于分析的工具,例如:

修改

要更精确地衡量处理器性能和内存访问,您还可以尝试AMD CodeAnalyst Performance AnalyzerHere是有关如何将其与英特尔处理器配合使用的说明,但我自己没有尝试过。

您可能会觉得有用的另一个工具是Intel Performance Tuning Utility