On Fri, May 13, 2016 at 12:26:07 +0800, Qiaowei Ren wrote: > Some Intel processor families (e.g. the Intel Xeon processor E5 v3 > family) introduced some RDT (Resource Director Technology) features > to monitor or control shared resource. Among these features, MBM > (Memory Bandwidth Monitoring), which is build on the CMT (Cache > Monitoring Technology) infrastructure, provides OS/VMM a way to > monitor bandwidth from one level of cache to another. > > With current perf framework, this patch adds support to perf event > for MBM. > > Signed-off-by: Qiaowei Ren <qiaowei.ren@xxxxxxxxx> > --- > include/libvirt/libvirt-domain.h | 26 ++++++++++++++++- > src/libvirt-domain.c | 12 ++++++++ > src/qemu/qemu_driver.c | 41 +++++++++++++++++++------- > src/util/virperf.c | 63 ++++++++++++++++++++++++---------------- > src/util/virperf.h | 2 ++ > 5 files changed, 108 insertions(+), 36 deletions(-) [...] > diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c > index c4c4968..670f620 100644 > --- a/src/qemu/qemu_driver.c > +++ b/src/qemu/qemu_driver.c [...] > @@ -19494,24 +19496,38 @@ qemuDomainGetStatsBlock(virQEMUDriverPtr driver, > > #undef QEMU_ADD_COUNT_PARAM > > +#define QEMU_ADD_PERF_PARAM_ULL(record, maxparams, name, value) \ > +do { \ > + char param_name[VIR_TYPED_PARAM_FIELD_LENGTH]; \ > + snprintf(param_name, VIR_TYPED_PARAM_FIELD_LENGTH, \ > + "perf.%s", name); \ > + if (virTypedParamsAddULLong(&(record)->params, \ > + &(record)->nparams, \ > + maxparams, \ > + param_name, \ > + value) < 0) \ > + goto cleanup; \ > +} while (0) This macro is used once so it's not really necessary. > + > static int > -qemuDomainGetStatsPerfCmt(virPerfPtr perf, > +qemuDomainGetStatsPerfRdt(virPerfPtr perf, > + virPerfEventType type, > virDomainStatsRecordPtr record, > int *maxparams) > { > - uint64_t cache = 0; > + uint64_t value = 0; > > - if (virPerfReadEvent(perf, VIR_PERF_EVENT_CMT, &cache) < 0) > + if (virPerfReadEvent(perf, type, &value) < 0) > return -1; > > - if (virTypedParamsAddULLong(&record->params, > - &record->nparams, > - maxparams, > - "perf.cache", > - cache) < 0) > - return -1; > + QEMU_ADD_PERF_PARAM_ULL(record, maxparams, > + virPerfEventTypeToString(type), > + value); Otherwise looks good. Thanks for tweaking the documentation. I'll push this with the macro dropped in a while. Peter
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list