微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ubuntu – perf kvm报告未知

我在ubuntu 13.04 servier中使用perf.内核3.8.0-19-通用.
我使用相同的操作系统在kvm中运行虚拟机.

我想从主机端介绍来宾os.
所以我按照指导操作并执行以下步骤:

>从vm复制/ proc / modules和/ proc / kallsyms
> perf kvm –guest –guestmodules = guest-modules –guestkallsyms = guest-kallsyms record -a
> perf kvm –guest –guestmodules = guest-modules –guestkallsyms = guest-kallsyms report

但该报告的输出未知

97.33%  [guest/17599]  [unkNown]         [g] 0xffffffff816d4470                
    2.67%  [guest/17599]  [unkNown]         [u] 0x00007fe66f2f88fb

为什么输出未知?使用perf kvm top将具有类似的输出.

解决方法

这已经很老了,但最近我遇到了类似的问题.在做了一些研究之后,我已经确定了在从主机中分析来宾VM时获得[未知]符号的一些原因.

当你这样做的时候

perf kvm –guest< guestkallsyms> < guestmodules>记录-a

来自主机,来宾内核将生成PERF_RECORD_MMAPs和PERF_RECORD_FORK等记录,这些记录指示将客户二进制文件映射到来宾内存以及正在分叉并随后被执行的任何进程(使用PERF_RECORD_COMM).

这些是内核在guest虚拟机上生成的边带事件.在从主机录制时,主机显然无法访问来宾内核环缓冲区以记录此类PERF事件.请注意,当尝试识别上下文切换时,这些边带事件后来变得有用.

客户内核生成的任何此类事件都将丢失给主机,因此主机将无法跟踪正在分叉和映射的来宾二进制文件.这些[未知符号]表示明显错过主机的来宾二进制文件.

可能尝试解决此问题的一种方法可能是在guest虚拟机和主机之间构建共享环缓冲区.这可能非常复杂.另一种方法可能是以某种方式同步客户机和主机时钟,然后同时在客户机和主机上运行perf记录-a.稍后可以合并两个perf.data文件以获得最终结果.

请注意,guest虚拟机上的硬件(而非内核)生成的任何perf事件也将在主机上可用..(如PERF_RECORD_SAMPLE).因此,使用这些事件进行记录和后处理可能会起作用.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐