Hello
The PAPI developers recently ran into some issues with the various virtual
machine related settings in the perf_event_open() system call.
What follows is what my proposed updated manpage sections look like; I'm
hoping to get some sort of feedback about the correctness of these statements.
exclude_hv
If this bit is set, the count excludes events that happen in
the hypervisor. This is mainly for PMUs that have
built-in hardware support for this feature (such as POWER;
this setting is silently ignored on x86).
...
exclude_host (since Linux 3.2)
When conducting measurements that include processes
running VM instances (i.e. have executed a KVM_RUN
ioctl(2) ) only measure events happening inside a guest
instance. This is only meaningful outside the guests;
this setting does not change counts gathered inside of a
guest. Currently this functionality is x86 only.
exclude_guest (since Linux 3.2)
When conducting measurements that include processes
running VM instances (i.e. have executed a KVM_RUN
ioctl(2) ) do not measure events happening inside guest
instances. This is only meaningful outside the guests;
this setting does not change counts gathered inside of a
guest. Currently this functionality is x86 only.
Signed-off-by: Vince Weaver <[email protected]>
diff --git a/man2/perf_event_open.2 b/man2/perf_event_open.2
index 638124c..a413c13 100644
--- a/man2/perf_event_open.2
+++ b/man2/perf_event_open.2
@@ -833,10 +833,9 @@ If this bit is set, the count excludes events that happen in kernel-space.
.IR "exclude_hv"
If this bit is set, the count excludes events that happen in the
hypervisor.
-This is mainly for PMUs that have built-in support for handling this
-(such as POWER).
-Extra support is needed for handling hypervisor measurements on most
-machines.
+This is mainly for PMUs that have built-in hardware support
+for this feature (such as POWER; this setting is silently
+ignored on x86).
.TP
.IR "exclude_idle"
If set, don't count when the CPU is idle.
@@ -978,10 +977,24 @@ struct sample_id {
.fi
.TP
.IR "exclude_host" " (since Linux 3.2)"
-Do not measure time spent in VM host.
+When conducting measurements that include processes running
+VM instances (i.e. have executed a
+.I KVM_RUN
+.BR ioctl (2)
+) only measure events happening inside a guest instance.
+This is only meaningful outside the guests; this setting does
+not change counts gathered inside of a guest.
+Currently this functionality is x86 only.
.TP
.IR "exclude_guest" " (since Linux 3.2)"
-Do not measure time spent in VM guest.
+When conducting measurements that include processes running
+VM instances (i.e. have executed a
+.I KVM_RUN
+.BR ioctl (2)
+) do not measure events happening inside guest instances.
+This is only meaningful outside the guests; this setting does
+not change counts gathered inside of a guest.
+Currently this functionality is x86 only.
.TP
.IR "exclude_callchain_kernel" " (since Linux 3.7)"
Do not include kernel callchains.