如何分析在 KVM 客户机中运行的应用程序
Posted
技术标签:
【中文标题】如何分析在 KVM 客户机中运行的应用程序【英文标题】:How to profile an app running inside KVM guest 【发布时间】:2015-04-24 12:08:29 【问题描述】:有没有办法使用 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)
#
【问题讨论】:
【参考方案1】:没有。
perf 工具在主机中运行,无法获取有关来宾中应用程序的信息。我认为将样本归属于来宾内核空间或来宾用户空间是基于采样时的 cpu 模式(而不是关于来宾正在做什么的更高级别的信息)。
您可以通过直接在来宾中运行 perf 来获取一些分析信息。使用perf list
查看选项(它们可能都在“软件”类别中)。
【讨论】:
【参考方案2】:是的,你可能可以。主人可以看到客人。您可以使用原始硬件事件来执行此操作(只需检查系统上可用的事件编号)。 对我来说,这是一个例子:
sudo perf kvm stat -I 1000 -e r1a8 -a
(确保您在一段时间后关闭 KVM 机器并查看零点来监控来宾 ..)
【讨论】:
【参考方案3】:是的, 怎么样
sudo perf kvm stat record -p appPID
它应该在 perf kvm 的帮助下工作,但事实并非如此!它在系统范围模式下工作正常 -a
【讨论】:
它不起作用 - ***.com/questions/35997809 - 主机内核没有来宾内核的进程表。 (Kvm 客户也可能是非 linux 和非 unix:en.wikipedia.org/wiki/Kernel-based_Virtual_Machine "*各种各样的客户操作系统与 KVM 一起工作,包括 Linux、BSD、Solaris、Windows、Haiku、ReactOS、Plan 9 的许多风格和版本, ... *")以上是关于如何分析在 KVM 客户机中运行的应用程序的主要内容,如果未能解决你的问题,请参考以下文章