3

我是使用 Google Compute Engine 的新手。我想使用 Linux perf 工具对我的应用程序进行一些各种性能事件测量并最终进行示例分析。我已经在我的 Ubuntu 16.04 LTS VM 上安装了 linux perf 工具。然而,即使是像循环这样的基本事件也会显示为“不支持”。我猜测底层 KVM 管理程序没有启用虚拟 PMU 支持,尽管我相信 KVM 确实通过非默认标志设置支持这一点。有什么办法可以让这个工作吗?

# perf stat -e cycles -a sleep 10

Performance counter stats for 'system wide':

<not supported>      cycles                   

  10.000598339 seconds time elapsed
4

1 回答 1

5

Linux perf 工具默认尝试使用硬件性能监控计数器。当您的操作系统被虚拟化时,您无法直接访问所有计数器;如果配置,一些虚拟化解决方案可能允许访问一些基本计数器。

在您的情况下,GCE 虚拟化似乎没有提供这样的访问权限。(请求您的 GCE 支持?如果它在您的 VM 之外被禁用,您无法更改此设置。)

您可以将 perf 与一些软件事件一起使用,例如-e task-clock获取基本分析。检查perf stat支持的事件和perf list软件事件的输出。

perf stat -e task-clock ...
perf record -e task-clock ...
于 2016-11-04T16:50:03.067 回答