tenant contol of qemu performance monitoring unit

Registered by sean mooney on 2019-01-07

qemu/kvm supports emulation of a vPMU to enable standard performance monitoring tools such as perf to be used
within a virtualisation environment. The vPMU which is available on x86 cpus emulate the hardware PMU
found on intel processors and was introduced in kvm in kernel 3.3.1.

while kvm/qemu support for a vPMU is generally a useful feature the requirement to collect and maintain
virtual performance counter introduces additional latency ~10us which is about 1% of the total budget
for 5G traffic processing.

libvirt introduced support for vPMU control in 1.2.12
see https://libvirt.org/formatdomain.html#elementsFeatures
so this feature is available in our minimum supported libvirt of 1.3.1 .

This specless blueprint proposes adding a tristate image metadata key hw_pmu=True|false|<none> (default:<none>)
and a corresponding flavor extra spec hw:pmu=true|false|<none> (default:<none>)
to enable/disable the pmu explcitly with a default of none which will skip emmiting the
pmu element allowing libvirt/qemu to implement there default policy as it does today.

if approved https://github.com/openstack/glance/blob/master/etc/metadefs/compute-libvirt.json
will be updated with the new value and the flavor docs https://docs.openstack.org/nova/latest/user/flavors.html
will be extended appropriately.

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
sean mooney
Direction:
Needs approval
Assignee:
sean mooney
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

On the nova meeting there was not enough cores to decide the fate of this bp for Stein. It feels a quick spec would be good about the flavor exta_spec but that most probably means that this bp will slip to Train. -- gibi 20190110

ill file a spec for this for train in the next week and start working on the implementation.
assuming people are still ok with the general idea it should be easy to update the implementation to match what is decided in the spec. for now ill assume it will
remain as a tristate bool. (true, false, <unset or python None>) -- sean 2019-03-26

Gerrit topic: https://review.openstack.org/#/q/topic:bp/libvirt-disable-pmu-for-realtime-guests

Addressed by: https://review.openstack.org/651269
    Libvirt: add vPMU spec for train

Gerrit topic: https://review.opendev.org/#/q/topic:bp/libvirt-disable-pmu-for-realtime-guests

Addressed by: https://review.opendev.org/651269
    Libvirt: add vPMU spec for train

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.