首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪些因素会影响cpu跟踪的速度?

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

Stack Overflow用户
提问于 2013-05-13 14:25:04
回答 2查看 338关注 0票数 1

当我使用YJP在我们自己的产品上做cpu跟踪配置文件时,它真的很慢。

该产品运行在16核8 8GB堆的机器上,我使用grinder运行一个小的负载测试(例如10个grinder线程),在分析过程中大约有7到10个步骤。我有一个用profiler启动产品的脚本,启动profiler(使用控制器api),然后启动grinder来模拟用户操作。当所有操作完成时,脚本将通知探查器停止分析并保存快照。

在分析过程中,对于研磨机测试中的每个步骤,都需要100多万毫秒才能完成。整个分析过程通常需要10多个小时,只需10个研磨机线程,每个线程运行10次测试。如果没有分析器,它将在500毫秒内完成。

所以..。除了要分析的产品的问题之外,是否还有其他因素会影响cpu跟踪进程本身的性能?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-13 16:54:04

上一次我使用的是YourKit (v7.5.11,相当旧,当前版本是12),它有两个CPU性能分析设置:采样和跟踪,后者速度更快,精度更低。由于跟踪应该更准确,我自己也使用了它,也观察到了巨大的减速,尽管有声明称减速是“一般”的。然而,它远远少于您的结果:从2秒到10分钟。我的代码是一个计算引擎的片段,几乎没有IO,没有等待,只是读取输入,计算并将结果输出到控制台-所以整个速度减慢来自分析器,没有外部影响。

回到你的问题:上面提到的选项-采样和跟踪,会影响性能,所以你可以尝试采样。

现在我认为: YourKit可以设置为自动执行一些事情,比如定期或在低内存上创建快照,分析内存使用情况,对象分配,这些措施中的每一个都会使分析变得更慢。也许你应该做一个在线会话,而不是脚本控制,看看它到底做了什么。

票数 1
EN

Stack Overflow用户

发布于 2013-05-14 03:27:51

根据一些

虽然跟踪提供了更多的信息,但它也有其缺点。首先,它可能会显着减慢分析的应用程序,因为分析器在每次进入和退出要分析的方法时都会执行特殊的代码。所分析的应用程序中的方法调用次数越多,打开跟踪时其速度就越慢。

第二个缺点是,由于该模式影响所分析的应用程序的执行速度,因此在该模式下记录的CPU时间可能比用采样记录的时间要少。仅当您确实需要方法调用计数时,才使用此模式。

另外:

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

当您的目标是定位和发现性能瓶颈时,采样通常是最佳选择。通过采样,探查器几乎不会为所分析的应用程序增加任何开销。

此外,文档中"CPU时间“的含义也有点混乱,因为它也谈到了”挂钟时间“。如果您正在执行任何I/O、等待、休眠或任何其他类型的阻塞,那么按照挂钟时间(而不是仅CPU时间)获取样本是很重要的,因为假设阻塞时间微不足道或不可避免是很危险的。幸运的是,这似乎是默认的(尽管它仍然有点不清楚):

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

时间。

“使用预配置的设置...”允许选择此礼物和其他礼物。(原文如此)

如果你的目标是让代码尽可能快,不要关心调用计数和测量“准确性”;do找出哪些代码行在堆栈上的大部分时间,以及为什么。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16515976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档