不能使用 Linux perf 因为你的 Linux 内核不支持 PERF_COUNT_HW_REF_CPU_CYCLES 事件

Can not use Linux perf because your Linux kernel does not support PERF_COUNT_HW_REF_CPU_CYCLES event

我只想了解有关虚拟环境的 linux "perf" 的信息。我正在尝试获取 perf stat -e cycles "my process",所以当我在我的 VM 上使用 运行 这个命令时(在 Vmware5.1 之上 运行ning)我得到了这样的消息..

/不支持> 周期

  10.498901015 seconds time elapsed

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

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

# sysctl kernel.perf_event_paranoid=0

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

不管有什么问题,都在您的来宾实例中。

我是 运行 VM 上的以下命令(不是运行 linux 的本地硬件机器),所以我们必须确保硬件 PMC 对 VM 可见.. 然后只有客人可以读取计数器 OS。

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