Re: [Xen-devel] [PATCH v3 4/5] tools: code refactoring for MBM

2015-01-13 Thread Chao Peng
On Tue, Jan 13, 2015 at 01:46:50PM +, Wei Liu wrote:
 On Tue, Jan 13, 2015 at 04:02:12PM +0800, Chao Peng wrote:
  Make some internal routines common so that total/local memory bandwidth
  monitoring in the next patch can make use of them.
  
  Signed-off-by: Chao Peng chao.p.p...@linux.intel.com
 
 Acked-by: Wei Liu wei.l...@citrix.com
 
 Could you please in your later patch submission include short change
 log int the commit message so that reviewers can know what has changed.
 
 The change log can be separated with --- so they do appear in the
 commit message in tree.
 
 Thanks Wei. I added the change logs in the cover letter for the whole
 patch serial. But your suggestion is valuable as we can add more
 detail change logs on per-patch base. I will take your VNUMA patch as
 an example :)

 Chao
 
 ___
 Xen-devel mailing list
 Xen-devel@lists.xen.org
 http://lists.xen.org/xen-devel

___
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel


[Xen-devel] [PATCH v3 4/5] tools: code refactoring for MBM

2015-01-13 Thread Chao Peng
Make some internal routines common so that total/local memory bandwidth
monitoring in the next patch can make use of them.

Signed-off-by: Chao Peng chao.p.p...@linux.intel.com
---
 tools/libxl/libxl_psr.c  |   44 -
 tools/libxl/xl_cmdimpl.c |   54 +++---
 2 files changed, 61 insertions(+), 37 deletions(-)

diff --git a/tools/libxl/libxl_psr.c b/tools/libxl/libxl_psr.c
index 84819e6..c88c421 100644
--- a/tools/libxl/libxl_psr.c
+++ b/tools/libxl/libxl_psr.c
@@ -176,20 +176,16 @@ int libxl_psr_cmt_get_l3_event_mask(libxl_ctx *ctx, 
uint32_t *event_mask)
 return rc;
 }
 
-int libxl_psr_cmt_get_cache_occupancy(libxl_ctx *ctx,
-  uint32_t domid,
-  uint32_t socketid,
-  uint32_t *l3_cache_occupancy)
+static int libxl__psr_cmt_get_l3_monitoring_data(libxl__gc *gc,
+ uint32_t domid,
+ xc_psr_cmt_type type,
+ uint32_t socketid,
+ uint64_t *data)
 {
-GC_INIT(ctx);
-
 unsigned int rmid;
-uint32_t upscaling_factor;
-uint64_t monitor_data;
 int cpu, rc;
-xc_psr_cmt_type type;
 
-rc = xc_psr_cmt_get_domain_rmid(ctx-xch, domid, rmid);
+rc = xc_psr_cmt_get_domain_rmid(CTX-xch, domid, rmid);
 if (rc  0 || rmid == 0) {
 LOGE(ERROR, fail to get the domain rmid, 
 or domain is not attached with platform QoS monitoring service);
@@ -204,14 +200,32 @@ int libxl_psr_cmt_get_cache_occupancy(libxl_ctx *ctx,
 goto out;
 }
 
-type = XC_PSR_CMT_L3_OCCUPANCY;
-rc = xc_psr_cmt_get_data(ctx-xch, rmid, cpu, type, monitor_data);
+rc = xc_psr_cmt_get_data(CTX-xch, rmid, cpu, type, data);
 if (rc  0) {
 LOGE(ERROR, failed to get monitoring data);
 rc = ERROR_FAIL;
-goto out;
 }
 
+out:
+return rc;
+}
+
+int libxl_psr_cmt_get_cache_occupancy(libxl_ctx *ctx,
+  uint32_t domid,
+  uint32_t socketid,
+  uint32_t *l3_cache_occupancy)
+{
+GC_INIT(ctx);
+uint64_t data;
+uint32_t upscaling_factor;
+int rc;
+
+rc = libxl__psr_cmt_get_l3_monitoring_data(gc, domid,
+   XC_PSR_CMT_L3_OCCUPANCY,
+   socketid, data);
+if (rc  0)
+goto out;
+
 rc = xc_psr_cmt_get_l3_upscaling_factor(ctx-xch, upscaling_factor);
 if (rc  0) {
 LOGE(ERROR, failed to get L3 upscaling factor);
@@ -219,8 +233,8 @@ int libxl_psr_cmt_get_cache_occupancy(libxl_ctx *ctx,
 goto out;
 }
 
-*l3_cache_occupancy = upscaling_factor * monitor_data / 1024;
-rc = 0;
+*l3_cache_occupancy = upscaling_factor * data / 1024;
+
 out:
 GC_FREE;
 return rc;
diff --git a/tools/libxl/xl_cmdimpl.c b/tools/libxl/xl_cmdimpl.c
index 24f3c8d..09ca73e 100644
--- a/tools/libxl/xl_cmdimpl.c
+++ b/tools/libxl/xl_cmdimpl.c
@@ -7846,12 +7846,13 @@ out:
 }
 
 #ifdef LIBXL_HAVE_PSR_CMT
-static void psr_cmt_print_domain_cache_occupancy(libxl_dominfo *dominfo,
- uint32_t nr_sockets)
+static void psr_cmt_print_domain_l3_info(libxl_dominfo *dominfo,
+ libxl_psr_cmt_type type,
+ uint32_t nr_sockets)
 {
 char *domain_name;
 uint32_t socketid;
-uint32_t l3_cache_occupancy;
+uint32_t data;
 
 if (!libxl_psr_cmt_domain_attached(ctx, dominfo-domid))
 return;
@@ -7861,15 +7862,21 @@ static void 
psr_cmt_print_domain_cache_occupancy(libxl_dominfo *dominfo,
 free(domain_name);
 
 for (socketid = 0; socketid  nr_sockets; socketid++) {
-if (!libxl_psr_cmt_get_cache_occupancy(ctx, dominfo-domid, socketid,
-   l3_cache_occupancy))
-printf(%13u KB, l3_cache_occupancy);
+switch (type) {
+case LIBXL_PSR_CMT_TYPE_CACHE_OCCUPANCY:
+if (!libxl_psr_cmt_get_cache_occupancy(ctx, dominfo-domid,
+   socketid, data))
+printf(%13u KB, data);
+break;
+default:
+return;
+}
 }
 
 printf(\n);
 }
 
-static int psr_cmt_show_cache_occupancy(uint32_t domid)
+static int psr_cmt_show_l3_info(libxl_psr_cmt_type type, uint32_t domid)
 {
 uint32_t i, socketid, nr_sockets, total_rmid;
 uint32_t l3_cache_size;
@@ -7905,19 +7912,22 @@ static int psr_cmt_show_cache_occupancy(uint32_t domid)
 printf(%14s %d, Socket, socketid);
 printf(\n);
 
-/* Total L3 cache size */
-printf(%-46s, Total L3 Cache Size);
-