哪些因素会影响cpu跟踪的速度?

时间:2013-05-13 06:25:04

标签: profiler yourkit

当我使用YJP在我们自己的产品上执行cpu-tracing profile时,它确实很慢。

该产品在一台16GB的机器中运行,堆积为8GB,我使用研磨机进行小负载测试(例如10个研磨机螺纹),在分析过程中有大约7~10步。我有一个脚本用启动器启动产品,开始分析(使用控制器api),然后启动grinder来模拟用户操作。当所有操作完成后,脚本会告诉探查器停止分析并保存快照。

在分析过程中,对于研磨机测试中的每个步骤,完成需要超过100万毫秒。只需10个研磨机螺纹,整个分析通常需要10个多小时,每次运行测试10次。没有探查器,它会在500毫秒内完成。

所以...除了要分析的产品的问题之外,还有其他什么会影响cpu跟踪过程本身的性能吗?

2 个答案:

答案 0 :(得分:1)

最后我使用了YourKit(v7.5.11,相当旧,当前版本为12)它有两个CPU分析设置:采样和跟踪,后者更快,更准确。由于跟踪被认为更准确,我自己使用它并观察到大幅放缓,尽管声称放缓是“平均”。然而,它远远低于你的结果:从2秒到10分钟。我的代码是计算引擎的一个片段,几乎没有IO,没有等待任何东西,只是读取输入,计算并将结果输出到控制台 - 所以整个减速来自分析器,没有外部影响。

回到你的问题:提到的选项 - samping vs tracing,会影响性能,所以你可以尝试采样。

现在我想起来了:可以设置YourKit,使其自动执行操作,例如定期制作快照或在内存不足,分析内存使用情况,对象分配,每个措施都会使分析速度变慢。也许您应该进行在线会话而不是脚本控制,以查看其真正的作用。

答案 1 :(得分:0)

根据一些Yourkit Doc

  

尽管跟踪提供了更多信息,但它有其缺点。   首先,它可能会显着减慢配置文件的应用程序,因为   探查器在每个进入和退出时执行特殊代码   正在分析的方法。方法调用的次数越多   在配置文件应用程序中,跟踪时的速度越低   打开了。

     

第二个缺点是,由于此模式影响执行   配置文件应用程序的速度,在此模式下记录的CPU时间   可能不如采样记录的时间充足。 请使用   仅当您确实需要方法调用计数时才使用此模式。

此外:

  

使用采样时,探查器会定期查询堆栈   运行线程来估计代码中最慢的部分。没方法   调用计数可用,只有CPU时间。

     

当您的目标是找到和时,采样通常是最佳选择   发现性能瓶颈。通过采样,分析器增加了   几乎没有配置应用程序的开销。

此外,文档所说的“CPU时间”有点令人困惑,因为它也谈到了“挂钟时间”。 如果您正在进行任何I / O,等待,休眠或任何其他类型的阻塞,那么在挂钟时间而不是仅CPU时间上获取样本非常重要,因为假设阻塞时间无关紧要或者不可避免的。 幸运的是,这似乎是默认的(虽然它仍然有点不清楚):

  

CPU采样的默认配置是测量墙壁时间   所有其他方法的I / O方法和CPU时间。

     

“使用预配置设置...”允许选择此项和其他   呈现。 (原文如此)

如果您的目标是尽可能快地使代码,关注调用计数和测量“准确性”; 执行找出堆栈中的代码行的大部分时间,以及原因。 More on all that.