[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v3 5/5] tools: add total/local memory bandwith monitoring
On Tue, Jan 13, 2015 at 04:02:13PM +0800, Chao Peng wrote: > Add Memory Bandwidth Monitoring(MBM) for VMs. Two types of monitoring > are supported: total and local memory bandwidth monitoring. To use it, > CMT should be enabled in hypervisor. > > Signed-off-by: Chao Peng <chao.p.peng@xxxxxxxxxxxxxxx> > --- > docs/man/xl.pod.1 | 9 +++++ > tools/libxc/include/xenctrl.h | 2 + > tools/libxc/xc_psr.c | 8 ++++ > tools/libxl/libxl.h | 8 ++++ > tools/libxl/libxl_psr.c | 84 > +++++++++++++++++++++++++++++++++++++++++ > tools/libxl/libxl_types.idl | 2 + > tools/libxl/xl_cmdimpl.c | 21 ++++++++++- > tools/libxl/xl_cmdtable.c | 4 +- > 8 files changed, 136 insertions(+), 2 deletions(-) > > diff --git a/docs/man/xl.pod.1 b/docs/man/xl.pod.1 > index 6b89ba8..0370625 100644 > --- a/docs/man/xl.pod.1 > +++ b/docs/man/xl.pod.1 > @@ -1461,6 +1461,13 @@ is domain level. To monitor a specific domain, just > attach the domain id with > the monitoring service. When the domain doesn't need to be monitored any > more, > detach the domain id from the monitoring service. > > +Intel Broadwell and later server platforms also offer total/local memory > +bandwidth monitoring. Xen supports per-domain monitoring for these two > +additional monitoring types. Both memory bandwidth monitoring and L3 cache > +occupancy monitoring share the same set of underground monitoring service. > Once ^^^^^^^^^^^ underlying? I'm not native speaker though. I will defer reviewing this paragraph to a native English speaker. > +a domain is attached to the monitoring service, monitoring data can be showed > +for any of these monitoring types. > + > =over 4 > [...] > +static int libxl__psr_cmt_get_mem_bandwidth(libxl__gc *gc, > + uint32_t domid, > + xc_psr_cmt_type type, > + uint32_t socketid, > + uint32_t *bandwidth) > +{ > + uint64_t sample1, sample2; > + uint32_t upscaling_factor; > + int retry_attempts = 0; > + int rc; > + > + do { > + rc = libxl__psr_cmt_get_l3_monitoring_data(gc, domid, type, socketid, > + &sample1); > + if (rc < 0) { > + rc = ERROR_FAIL; > + goto out; > + } > + > + usleep(10000); > + > + rc = libxl__psr_cmt_get_l3_monitoring_data(gc, domid, type, socketid, > + &sample2); > + if (rc < 0) { > + rc = ERROR_FAIL; > + goto out; > + } > + > + if (sample2 >= sample1) If sample2 == sample1 then bandwidth is zero. Is this expected? > + break; > + > + if (retry_attempts < MBM_SAMPLE_RETRY_MAX) { > + retry_attempts++; > + } else { > + LOGE(ERROR, "event counter overflowed"); > + rc = ERROR_FAIL; > + goto out; > + } > + > + } while(1); Minor nit, should be "while (1)". The rest of this patch looks OK to me. Wei. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |