首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >perf kvm报告不详

perf kvm报告不详
EN

Stack Overflow用户
提问于 2013-11-19 11:32:22
回答 1查看 464关注 0票数 5

我在ubuntu 13.04 servier中使用perf。内核3.8.0-19-泛型。我使用相同的操作系统在kvm中运行一个虚拟机。

我想分析一下主人那边的客人。因此,我遵循指导并执行以下步骤:

  1. 从vm复制/proc/模块和/proc/kallsyms
  2. perf -来宾-客服模块=来宾-客服-kallsyms记录-a
  3. perf kvm -来宾-客服-模块-客服-kallsyms报告

但是报告的输出是未知的。

代码语言:javascript
复制
   97.33%  [guest/17599]  [unknown]         [g] 0xffffffff816d4470                
    2.67%  [guest/17599]  [unknown]         [u] 0x00007fe66f2f88fb   

为什么输出未知?使用perf顶部将有类似的输出。

EN

回答 1

Stack Overflow用户

发布于 2017-12-01 10:45:57

这是一个相当古老的问题,但我最近也遇到了类似的问题。在进行了一些研究之后,我已经确定了为什么您在分析来自主机的客户VM时获得未知符号的一些原因。

当你做一个

perf kvm --guest <guestkallsyms> <guestmodules> record -a

从主机上,客户机内核将生成PERF_RECORD_MMAPsPERF_RECORD_FORK等记录,这些记录表明客户机二进制文件被映射到客户机内存和任何进程被分叉,随后被执行(使用PERF_RECORD_COMM). )

这些是由来宾上的内核生成的边带事件。在从主机进行记录时,主机显然无法访问用于记录此类PERF事件的来宾内核环缓冲区。请注意,这些边带事件在尝试标识上下文开关时会变得有用。

来宾内核生成的任何这样的事件都将丢失给主机,因此主机将无法跟踪来宾二进制文件、被分叉的。这些[unknown symbols]表示主机明显丢失的来宾二进制文件。

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

请注意,由客户机上的硬件(而不是内核)生成的任何perf事件也将在主机上可用。(就像PERF_RECORD_SAMPLE).因此,这些事件的记录和后处理很可能会起作用。

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

https://stackoverflow.com/questions/20070393

复制
相关文章

相似问题

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