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).因此,使用这些事件进行记录和后处理可能会起作用.

相关文章

ubuntu退出redis的示例:指定配置文件方式启动源码redis:roo...
ubuntu中mysql改密码忘了的解决方法:1.在终端中切换到root权...
ubuntu安装mysql失败的解决方法原因:可能是原有的MySQL还有...
使用centos和ubuntu建站的区别有以下几点1.CentOS是Linux发行...
ubuntu图形界面和字符界面切换的方法:可以通过快捷键CTRL+A...
ubuntu中重启mysql失败的解决方法1.首先,在ubuntu命令行中,...