当负载超过内核时,我还能分析我的代码吗?

Posted

技术标签:

【中文标题】当负载超过内核时,我还能分析我的代码吗?【英文标题】:Can I still profile my code when the load exceeds the cores? 【发布时间】:2018-03-24 16:11:21 【问题描述】:

有时我需要分析应用程序,同时需要启动大量不相关的计算。通常我会启动多个作业,以使负载超过核心数,以便稍后我可以在所有作业都完成后回来。

在这种情况下我还能安全地解释配置文件结果吗?

我可以想象在某些情况下,由于我的系统被作业超额订阅,正在分析的作业按比例运行,结果不会受到影响,因为也许作业的轮询频率也较低。

我还可以想象一个分析器以设定的周期(比如每 10 毫秒)检查应用程序,发现代码在特定函数中停留的时间更长,但这仅仅是因为系统被超额订阅。

我只是在猜测这些事情,两者都可能是真的,但我需要澄清一下。

【问题讨论】:

【参考方案1】:

您不只是在测量,对吧? 你试图找出任何隐藏的“疾病”,如果你能治愈它们,代码会运行得更快,对吧?

如果是这样,任何此类疾病都会占用其进程时间的某个部分,无论它因其他原因运行多快或多慢。 它可以运行一分钟或一天 - 分数大致相同。

所以你不需要测量时间的东西。 您需要能够精确定位花费最大部分时间的疾病。

This 是一种找到它们的方法。

【讨论】:

以上是关于当负载超过内核时,我还能分析我的代码吗?的主要内容,如果未能解决你的问题,请参考以下文章

如果我的评论表中只有他们的 ID,我还能以某种方式获取对图像发表评论的人的用户名吗

我还能提高 GPS 精度吗?

Visual Studio Express中缺少文件,无法打开项目;如果我重新创建项目,我还能以某种方式与Github同步吗?

启用僵尸对象不足以帮助调试我的问题 - 我还能做啥?

当 sleep() 不能很好地与警报一起工作时,我还能做啥“睡眠”?

四月份OO总结分析