ubuntu 12.10 perf stat <not supported =“”> cycles </not>

时间:2013-11-04 07:04:13

标签: ubuntu virtualization xen perf

我使用的系统是ubuntu-12.10-desktop-amd64

我通过

安装perf
apt-get install linux-tools linux-tools-common linux-tools-3.5.0-40

当我使用perf list时,它会按预期列出所有事件。但是当我使用perf stat时,结果似乎异常

perf stat ls

结果是:

 Performance counter stats for 'ls':

      3.988508 task-clock                #    0.678 CPUs utilized          
           172 context-switches          #    0.043 M/sec                  
             0 CPU-migrations            #    0.000 K/sec                  
           276 page-faults               #    0.069 M/sec                  
      <not supported> cycles                  
      <not supported> stalled-cycles-frontend 
      <not supported> stalled-cycles-backend  
      <not supported> instructions            
      <not supported> branches                
      <not supported> branch-misses           

   0.005883014 seconds time elapsed

为什么不支持这些活动?启用这些事件所需的任何操作?

1 个答案:

答案 0 :(得分:2)

您已虚拟化Ubuntu,并且未虚拟化硬件计数器(PMU / PMC MSR寄存器)。 Xen(或其他虚拟化软件)应该知道如何使用PMC寄存器,为来宾模拟它们并将请求转发到真实硬件。我不知道它是在Xen中完成的。但对于亚马逊AWS EC2,仅花费数年才实现基本硬件事件(并且仅在专用实例上),它们仅在2017年5月完成:http://www.brendangregg.com/blog/2017-05-04/the-pmcs-of-ec2.html&#34; EC2的PMC:测量IPC&#34;作者:Brendan Gregg:

  

性能监控计数器(PMC)现在可从AWS EC2云中的专用主机类型公开获取。世界各地的PMC书呆子高兴! (我们所有六个人。)......   在这篇文章中,我将总结EC2中可用的PMC,它们仅用于专用主机(例如,m4.16x1,i3.16xl),并且我将展示测量IPC。请注意,PMC也称为HPC(硬件性能计数器),以及其他名称。

他还解释了Xen以及在极少数情况下启用它们的原因:

  

这在云中怎么可能?

     

您可能想知道云客户如何阅读PMC。有用   像这样:PMC通过特权指令RDMSR和管理   配置的WRMSR(我在EC2的MSR中写过),以及   RDPMC用于阅读。特权指令会导致客户退出   由管理程序处理。管理程序然后可以运行自己的   代码,并配置PMC,如果实际硬件允许,并保存和   在客户端之间切换上下文时恢复其状态。

     

Xenstream的主流支持在今年推出了虚拟性能   监测单位(vPMU)。它在Xen引导中使用vpmu=on进行配置   线。但是,很少打开它。为什么呢?

     

有数百个PMC,它们都暴露在vpmu = on。   有些人会冒安全隐患吗?已有多篇论文   公布了PMC侧通道攻击,其中测量一定   将输入发送到已知目标程序时,PMC最终会泄漏   目标状态的位。虽然这些在实践中不太可能,但是   此类攻击不仅限于PMC(例如,还有定时攻击),   你可以理解一个不想启用的偏执安全策略   默认情况下所有PMC。

所以,解决方案:

  • 在非虚拟化(本机,主机)Linux(Ubuntu或任何其他)上运行perf。
  • 启用vpmu=on启动选项时使用Xen(仅当您不将此PC的虚拟客户机提供给不受信任的用户时)
  • 将其他虚拟化解决方案与虚拟化PMU配合使用。根据VirtualBox页面,可以在Vmware中启用一些基本事件:https://gist.github.com/dannas/1fa2cfb0d3d108282955&#34;关于Virtualbox&#34;的性能计数器的注释。 dannas的pmu_notes.txt(好评)。有些是KVM为客人模仿的:https://stackoverflow.com/a/43460663

PS:旧perf list没有检查任何内容,它只是打印了所有已知事件,甚至没有支持/未实现的hw事件。它没有打印真实的CPU事件集。 libpfm4有表格,并且有特定于英特尔的perf wrapper ocperf.py github.com/andikleen/pmu-tools使用特定于英特尔的名称。