首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在SPECCpu2006编译的二进制文件上运行带有Intel-PT事件的perf记录会使服务器机器崩溃。

在SPECCpu2006编译的二进制文件上运行带有Intel-PT事件的perf记录会使服务器机器崩溃。
EN

Stack Overflow用户
提问于 2017-04-12 18:40:25
回答 1查看 354关注 0票数 1

当使用perf和Intel事件时,我有一个反复出现的问题.我目前正在Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz机器上执行分析,x86_64体系结构和启用虚拟化的32个硬件线程。我特别使用来自SpecCPU2006的程序/源代码进行分析。

我特别注意到,当我第一次对SpecCPU2006编译的二进制文件执行分析时,一切正常,生成了perf.data文件,这与Intel预期的一样。由于SpecCPU2006程序是计算密集型的(在任何时候都要使用100%的CPU ),因此对于大多数程序来说,perf.data文件显然是很大的。我获得了大致的7-10 GB的perf.data文件的大多数剖析程序。

然而,当我第二次尝试在同一个编译的二进制文件上执行分析时,在成功地完成第一个二进制文件之后--我的服务器机器就被冻结了。有时,当我尝试第三次/第四次分析(在第二次或第三次分析成功完成之后)时,就会发生这种情况。这种行为是非常不可预测的。现在,除非我重新启动机器,否则我无法分析任何更多的二进制文件。

我还发布了服务器错误日志,一旦我看到计算机已经停止响应,就会得到这些日志。

服务器错误日志

显然,有一条错误消息说修复递归错误,但是需要重新启动!

这种情况发生在足够大的SpecCPU2006二进制文件中,这些二进制文件不需要perf.就可以运行超过1分钟。

有什么特别的原因会发生吗?这不应由于CPU使用率过高而发生,因为运行程序时不带perf或使用perf,但任何其他硬件事件(可由perf列表看到)都已成功完成。这似乎只发生在英特尔-PT。

请指导我如何使用这些步骤来解决这个问题。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-17 04:44:45

看来我现在解决了这个问题。我也会发个答案。

服务器崩溃是因为一个空指针、取消引用/访问发生在结构perf_event的一个特定成员上。基本上,perf_event->handle成员就是罪魁祸首。正如@osgx所建议的,这个信息是从var/log/syslog文件中获得的。错误信息的一部分是:-

4月19日04:49:15 ######:582411.404677 BUG:无法在000000000000ea处理内核空指针取消引用

perf_event_aux_event+0x2e/0xf0内核: 582411.404747 IP:[]

这个结构成员最终被证明为NULL的一个可能的场景是,即使在更早的perf记录运行完成释放其所有资源之前,我就开始捕获数据包。这已经在内核版本4.10中得到了正确的处理。我使用的是内核版本4.4。

我把我的内核升级到更新的版本,它现在运行得很好!

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

https://stackoverflow.com/questions/43377242

复制
相关文章

相似问题

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