如何在 KVM 来宾中分析应用程序 运行

How to profile an app running inside KVM guest

是否有任何方法可以使用 perf_events 之类的工具在 KVM 来宾中分析应用程序 运行?

我尝试使用

来做到这一点
perf kvm --guestkallsyms=.. --guestmodules=.. --guest record -a

但报告中的信息非常无用:

# ========
#
# Samples: 627  of event 'cache-misses'
# Event count (approx.): 295421
#
# Overhead  Command     Shared Object                  Symbol
# ........  .......  ................  ......................
#
    73.18%   :15661  [x_tables]        [g] 0xffffffff8176bc80
    26.82%   :15661  [unknown]         [u] 0x00000000004004fe


#
# (For a higher level overview, try: perf report --sort comm,dso)
#

没有

perf 工具在主机中运行,无法获取有关来宾中应用程序的信息。我认为样本对来宾内核空间或来宾用户空间的归属是基于样本被采集时的 cpu 模式(而不是关于来宾正在做什么的更高级别的信息)。

您可以直接在来宾中通过 运行 perf 获取一些分析信息。使用 perf list 查看选项(它们可能都在 'software' 类别中)。

是的,

怎么样
sudo perf kvm stat record  -p appPID

它应该在 perf kvm 的帮助下工作,但它没有!它在 -a

的系统范围模式下工作正常

是的,你可能可以。主人可以看到客人。您可以使用原始硬件事件来执行此操作(只需检查您的系统上可用的事件编号)。 对我来说,这就是一个例子:

sudo perf kvm stat -I 1000 -e r1a8 -a

(确保您正在通过关闭 KVM 机器并在一段时间后查看零来监视来宾 ..)