如何测量虚拟机中进程的缓存未命中?

问题描述 投票:0回答:1

我曾经使用perf_event_open()来衡量某个进程的缓存未命中。现在,我需要以类似的方式测量虚拟机中进程的缓存未命中。但是perf_event_open()仅将虚拟机视为一个进程。看来perf kvm可以做到。但是我可以使用代码吗?

virtual-machine virtualization kvm cpu-cache perf
1个回答
1
投票

否,如果您在主机上运行perf_event_open()系统调用,则无法测量虚拟机中正在运行的进程的缓存丢失。

主机和来宾(即VM)不共享内​​核,并且您无法从主机获取在VM中运行的进程的性能特征。您在主机上运行的任何perf kvm事件只能衡量整个虚拟机的性能特征,而不能衡量虚拟机内部的任何进程。更多详细信息here

您应该直接在来宾内部运行perf。您可以通过程序手动使用perf_event_open()系统调用,并仅在VM内部运行它。当然,这可能需要您为来宾启用VPMU,并且,如果您的主机CPU支持PMU计数器的虚拟化,请使用cpu=host运行VM。

© www.soinside.com 2019 - 2024. All rights reserved.