【问题标题】:Can not use Linux perf because your Linux kernel does not support PERF_COUNT_HW_REF_CPU_CYCLES event无法使用 Linux perf,因为您的 Linux 内核不支持 PERF_COUNT_HW_REF_CPU_CYCLES 事件
【发布时间】:2016-07-26 06:32:41
【问题描述】:

我只想了解有关虚拟环境的 linux“性能”的信息。我正在尝试让 perf stat -e 循环“我的进程”,所以当我在我的虚拟机(在 Vmware5.1 之上运行)上运行这个命令时,我收到了这样的消息..

/不支持>循环

  10.498901015 seconds time elapsed

我可以理解 VMware 虚拟机管理程序可能存在权限问题或配置错误,有人可以指出这些吗?另外,我已经阅读了内核标志“PERF_COUNT_HW_REF_CPU_CYCLES”,我应该如何检查我的内核是否启用了这个标志?有什么命令吗?

【问题讨论】:

    标签: linux vmware perf dpdk


    【解决方案1】:

    确保将 perf 编译到 VM 的内核中并通过 sysctl kernel.perf_event_paranoid 禁用偏执模式,即:

    # sysctl kernel.perf_event_paranoid=0

    【讨论】:

    • kernel.perf_event_paranoid 在我的虚拟机中已经是 0,我怎么能在我的裸机 linux PC 中看到这个值是 1.. 你提到的标志也只适用于普通用户。但我是我的虚拟机中的 root 用户。你能打电话给“PERF_COUNT_HW_REF_CPU_CYCLES”吗?我该如何检查?
    • 在 CentOS 上很容易检查:grep PERF /boot/config-$(uname -r)
    【解决方案2】:

    我在 VM 上运行以下命令(不是运行 linux 的本机硬件机器),因此我们必须确保硬件 PMC 对 VM 的可见性......然后只有计数器才能被来宾操作系统读取。

    ESXi5.1 或更高版本上有一个 vPMC 选项。一旦我们为我们的 VM 启用了这些 hyprevisor 选项,guest 就可以从底层硬件架构中读取适当的值。详情请查看here

    【讨论】:

      【解决方案3】:

      ESXi 不限制来宾虚拟机的内核权限。由于内核不知道底层管理程序,因此我们不限制您可以从内核中提取的统计信息。

      无论有什么问题,都在您的访客实例中。

      【讨论】:

      • 我不是在谈论内核权限,我只是询问 ESXi 虚拟机管理程序是否可以对其虚拟机进行任何保护,以访问硬件寄存器,如果是,这些是什么以及我在哪里可以找到(比如.vmx 文件)?
      • 本身没有“权限”模型。我刚刚与工程团队的一些人交谈,他们向我指出了这一点:kb.vmware.com/selfservice/microsites/… 请注意,您可以控制我们点亮哪些 CPU 功能以及我们从物理 CPU 传递多少信息。这是你要找的吗?
      • 谢谢,我已经知道您提供的链接。我需要 ESXi 虚拟机管理程序的 root 权限才能进行这些更改(即使 .vmx 仅适用于每个 VM),但我没有 root 权限来执行此操作。我的问题很简单,如果我在我的真实设备(RHEL/cent/fedora)上运行“perf stat -e Cycles some_pid”,它会给出正确的输出,但相同的命令在虚拟设备(RHEL/cent)中给出“不支持”。相同的结果适用于我自己的 c 代码 wichc 执行 rdpmc/wrpmc。如果我理解正确,由于默认情况下某些 VM/管理程序设置,VM 无法访问硬件寄存器。
      • 是的,听起来他们没有在 VMX 文件中启用 VPMC。正如您所说,如果不访问 ESXi,您将无法执行此操作。
      猜你喜欢
      • 2016-08-21
      • 2011-02-17
      • 2020-02-14
      • 2015-01-10
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 2020-05-17
      • 2019-12-02
      相关资源
      最近更新 更多