gpt4 book ai didi

linux - 在来自 SPECCpu2006 的已编译二进制文件上使用 Intel-PT 事件运行 perf record 会使服务器机器崩溃

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:40:26 24 4
gpt4 key购买 nike

我在使用 perf with Intel-PT event 时遇到反复出现的问题。我目前正在一台 Intel(R) Xeon(R) CPU E5-2620 v4 @ 2.10GHz 机器上进行性能分析,该机器具有 x86_64 架构 和启用了虚拟化的 32 个硬件线程。我专门使用 SpecCPU2006 的程序/源代码进行分析。

我特别观察到,我第一次对 SpecCPU2006 中的一个编译二进制文件执行分析时,一切正常,并且生成了 perf.data 文件,这与 Intel-PT 的预期一致.由于 SpecCPU2006 程序是计算密集型的(任何时候都使用 100% 的 CPU),显然 perf.data 文件对于大多数程序来说都会很大。我为大多数分析程序获得了大约 7-10 GB perf.data 文件。

但是,当我尝试对同一个已编译二进制文件执行第二次分析时,在第一次成功完成之后——我的服务器机器死机了。有时,当我第三次/第四次尝试分析时(第二次或第三次分析成功完成后),会发生这种情况。这种行为是高度不可预测的。现在我无法再分析任何二进制文件,除非我再次重新启动机器。

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

Server error logs

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

这种情况发生在特别大的 SpecCPU2006 二进制文件上,这些二进制文件需要超过 1 分钟才能在没有性能的情况下运行。

发生这种情况有什么特别的原因吗?这不应该由于 CPU 使用率过高而发生,因为在没有 perf 或有 perf 的情况下运行程序但任何​​其他硬件事件(可以通过 perf 列表看到)成功完成。这似乎只发生在 Intel-PT 上。

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

最佳答案

看来我现在已经解决了这个问题。所以会发布一个答案。

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

4 月 19 日 04:49:15 ###### 内核:[582411.404677] BUG:无法处理 00000000000000ea 处的内核 NULL 指针取消引用

4 月 19 日 04:49:15 ###### 内核:[582411.404747] IP:[] perf_event_aux_event+0x2e/0xf0

如果我在较早的 perf record 运行完成释放其所有资源之前就开始捕获数据包,那么该结构成员可能会出现为 NULL 的情况。这已在内核版本 4.10 中得到妥善处理。我使用的是内核版本 4.4。

我将内核升级到新版本,现在可以正常工作了!

关于linux - 在来自 SPECCpu2006 的已编译二进制文件上使用 Intel-PT 事件运行 perf record 会使服务器机器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43377242/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com