【问题标题】:ubuntu 12.10 perf stat <not supported> cyclesubuntu 12.10 perf stat <不支持> 周期
【发布时间】:2013-11-14 19:07:45
【问题描述】:

我使用的系统是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

为什么不支持这些事件?启用这些事件需要任何操作吗?

【问题讨论】:

  • 我发现在原始 ubuntu 系统中,性能很好。但是在使用ubuntu和xen的时候,就会出现上面的问题。我从源代码编译 xen。编译xen时需要什么参数吗??

标签: ubuntu virtualization xen perf


【解决方案1】:

您已虚拟化 Ubuntu,但硬件计数器(PMU/PMC MSR 寄存器)未虚拟化。 Xen(或其他虚拟化软件)应该知道如何使用 PMC 寄存器,为来宾模拟它们并将请求转发到真实硬件。我不知道它是在 Xen 中完成的。但对于 Amazon AWS EC2,仅实施基本硬件事件(并且仅在专用实例上)需要数年时间,它们仅在 2017 年 5 月完成:http://www.brendangregg.com/blog/2017-05-04/the-pmcs-of-ec2.htmlBrendan Gregg 的“EC2 的 PMC:衡量 IPC”:

性能监控计数器 (PMC) 现在可从 AWS EC2 云中的专用主机类型公开获得。全世界的 PMC 书呆子们欢欣鼓舞! (我们六个人。)... 在这篇文章中,我将总结 EC2 中可用的 PMC,它们仅适用于专用主机(例如,m4.16xl、i3.16xl),我将演示如何测量 IPC。请注意,PMC 也称为 HPC(硬件性能计数器)以及其他名称。

他还解释了 Xen 以及为什么在极少数情况下启用它们:

这怎么可能在云端实现?

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

多年前支持的主流 Xen 及其虚拟性能 监控单元 (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“关于 Virtualbox 性能计数器的说明”pmu_notes.txt,作者为 dannas(好评)。有些是由 KVM 为客人模拟的:https://stackoverflow.com/a/43460663

PS:旧的perf list 没有检查任何东西,它只是打印了所有已知的事件,甚至不支持/未实现的硬件事件。而且它没有打印真正的 CPU 事件集。 libpfm4 有表格,并且 github.com/andikleen/pmu-tools 的 Intel 特定 perf wrapper ocperf.py 可以使用 Intel 特定名称。

【讨论】:

    猜你喜欢
    • 2016-07-18
    • 2014-05-07
    • 1970-01-01
    • 2016-08-21
    • 2014-04-05
    • 2015-05-16
    • 2014-05-26
    • 1970-01-01
    • 2022-12-03
    相关资源
    最近更新 更多