<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://linux-kvm.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Iro</id>
	<title>KVM - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://linux-kvm.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Iro"/>
	<link rel="alternate" type="text/html" href="https://linux-kvm.org/page/Special:Contributions/Iro"/>
	<updated>2026-04-06T05:07:20Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.5</generator>
	<entry>
		<id>https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=4074</id>
		<title>Guest PMU</title>
		<link rel="alternate" type="text/html" href="https://linux-kvm.org/index.php?title=Guest_PMU&amp;diff=4074"/>
		<updated>2011-09-28T08:56:15Z</updated>

		<summary type="html">&lt;p&gt;Iro: Fix presentation link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Guest PMU (Performance Monitoring Unit) currently exists in the form of an out-of-tree patchset.&lt;br /&gt;
&lt;br /&gt;
See the [http://www.linux-kvm.org/wiki/images/6/6d/Kvm-forum-2011-performance-monitoring.pdf KVM Forum 2011 presentation] about the state as of August 2011.&lt;br /&gt;
&lt;br /&gt;
= Current status =&lt;br /&gt;
&lt;br /&gt;
Version 1 Architectural PMU on Intel and AMD hosts is implemented and works.&lt;br /&gt;
&lt;br /&gt;
= TODO =&lt;br /&gt;
&lt;br /&gt;
== Guest visible features ==&lt;br /&gt;
* Implement Version 2 Architectural PMU - allows faster switch times using PERF_GLOBAL_ENABLE MSR&lt;br /&gt;
* Implement Version 3 Architectural PMU&lt;br /&gt;
* Model specific PMU - allows access to more events and support for more tools; but restricts live migration capabilities&lt;br /&gt;
** Need per-event validation to avoid leaking socket-wide or core-wide information&lt;br /&gt;
* PEBS - Preceise Event Based Sampling - allows examining program state&lt;br /&gt;
* BTS - Branch Trace Store - allows tracing program execution accurately&lt;br /&gt;
&lt;br /&gt;
== Accuracy ==&lt;br /&gt;
&lt;br /&gt;
* Update Joerg Roedel&#039;s exclude_guest/exclude_host patchset to support Intel hosts, using vmx&#039;s ability to load PERF_GLOBAL_ENABLE on vmentry/vmexit&lt;br /&gt;
&lt;br /&gt;
== Performance ==&lt;br /&gt;
&lt;br /&gt;
* Investigate reports that enabling the guest PMU reduces performance&lt;br /&gt;
* Update the perf_event subsystem to make use of the PERF_GLOBAL_ENABLE MSR to speed up context switching, on both guest and host&lt;br /&gt;
* Check whether perf_event does unnecessary RMW operations on MSRs, which are significantly slow in a guest&lt;br /&gt;
* Add a paravirt batch MSR read/write facility, update perf to use it when available&lt;br /&gt;
* Change perf to use an ordinary interrupt instead of NMI when profiling only user space, or only a guest (reduces work in NMI context)&lt;br /&gt;
&lt;br /&gt;
= Git repositories =&lt;br /&gt;
&lt;br /&gt;
Guest PMU: git://github.com/avikivity/kvm.git pmu&lt;br /&gt;
&lt;br /&gt;
exclude_host: git://github.com/avikivity/kvm.git perf-guest-counting&lt;/div&gt;</summary>
		<author><name>Iro</name></author>
	</entry>
</feed>