aboutsummaryrefslogtreecommitdiffstats
path: root/tools/xenstat
diff options
context:
space:
mode:
authorKeir Fraser <keir.fraser@citrix.com>2009-12-01 13:38:18 +0000
committerKeir Fraser <keir.fraser@citrix.com>2009-12-01 13:38:18 +0000
commitfc50aaf0d87ae5a59ba849795ad7740b242f6e56 (patch)
treee6fae5c8cf73ede15f4944f7e0ba95b31d0645d8 /tools/xenstat
parent1fd93d4f8cb8e3a2f5cbf27aaee7dea25842b55b (diff)
downloadxen-fc50aaf0d87ae5a59ba849795ad7740b242f6e56.tar.gz
xen-fc50aaf0d87ae5a59ba849795ad7740b242f6e56.tar.bz2
xen-fc50aaf0d87ae5a59ba849795ad7740b242f6e56.zip
xentop: Add tmem-freeable info when tmem is active
(No change to xentop output when tmem is inactive.) Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com>
Diffstat (limited to 'tools/xenstat')
-rw-r--r--tools/xenstat/libxenstat/src/xenstat.c9
-rw-r--r--tools/xenstat/libxenstat/src/xenstat.h3
-rw-r--r--tools/xenstat/libxenstat/src/xenstat_priv.h1
-rw-r--r--tools/xenstat/xentop/xentop.c13
4 files changed, 23 insertions, 3 deletions
diff --git a/tools/xenstat/libxenstat/src/xenstat.c b/tools/xenstat/libxenstat/src/xenstat.c
index 3332051363..67d861fd55 100644
--- a/tools/xenstat/libxenstat/src/xenstat.c
+++ b/tools/xenstat/libxenstat/src/xenstat.c
@@ -154,6 +154,7 @@ xenstat_node *xenstat_get_node(xenstat_handle * handle, unsigned int flags)
return NULL;
}
+
node->cpu_hz = ((unsigned long long)physinfo.cpu_khz) * 1000ULL;
node->num_cpus = physinfo.nr_cpus;
node->tot_mem = ((unsigned long long)physinfo.total_pages)
@@ -161,6 +162,9 @@ xenstat_node *xenstat_get_node(xenstat_handle * handle, unsigned int flags)
node->free_mem = ((unsigned long long)physinfo.free_pages)
* handle->page_size;
+ node->freeable_mb = (long)xc_tmem_control(handle->xc_handle, -1,
+ TMEMC_QUERY_FREEABLE_MB, -1, 0, 0, 0, NULL);
+
/* malloc(0) is not portable, so allocate a single domain. This will
* be resized below. */
node->domains = malloc(sizeof(xenstat_domain));
@@ -304,6 +308,11 @@ unsigned long long xenstat_node_free_mem(xenstat_node * node)
return node->free_mem;
}
+long xenstat_node_freeable_mb(xenstat_node * node)
+{
+ return node->freeable_mb;
+}
+
unsigned int xenstat_node_num_domains(xenstat_node * node)
{
return node->num_domains;
diff --git a/tools/xenstat/libxenstat/src/xenstat.h b/tools/xenstat/libxenstat/src/xenstat.h
index dfc27d4d2c..1da354b22a 100644
--- a/tools/xenstat/libxenstat/src/xenstat.h
+++ b/tools/xenstat/libxenstat/src/xenstat.h
@@ -69,6 +69,9 @@ unsigned long long xenstat_node_tot_mem(xenstat_node * node);
/* Get amount of free memory on a node */
unsigned long long xenstat_node_free_mem(xenstat_node * node);
+/* Get amount of tmem freeable memory (in MiB) on a node */
+long xenstat_node_freeable_mb(xenstat_node * node);
+
/* Find the number of domains existing on a node */
unsigned int xenstat_node_num_domains(xenstat_node * node);
diff --git a/tools/xenstat/libxenstat/src/xenstat_priv.h b/tools/xenstat/libxenstat/src/xenstat_priv.h
index ca11d1b3d0..af955014ae 100644
--- a/tools/xenstat/libxenstat/src/xenstat_priv.h
+++ b/tools/xenstat/libxenstat/src/xenstat_priv.h
@@ -49,6 +49,7 @@ struct xenstat_node {
unsigned long long free_mem;
unsigned int num_domains;
xenstat_domain *domains; /* Array of length num_domains */
+ long freeable_mb;
};
struct xenstat_domain {
diff --git a/tools/xenstat/xentop/xentop.c b/tools/xenstat/xentop/xentop.c
index cb067ae281..2e6634948b 100644
--- a/tools/xenstat/xentop/xentop.c
+++ b/tools/xenstat/xentop/xentop.c
@@ -799,6 +799,7 @@ void do_summary(void)
crash = 0, dying = 0, shutdown = 0;
unsigned i, num_domains = 0;
unsigned long long used = 0;
+ long freeable_mb = 0;
xenstat_domain *domain;
time_t curt;
@@ -825,12 +826,18 @@ void do_summary(void)
num_domains, run, block, pause, crash, dying, shutdown);
used = xenstat_node_tot_mem(cur_node)-xenstat_node_free_mem(cur_node);
+ freeable_mb = xenstat_node_freeable_mb(cur_node);
/* Dump node memory and cpu information */
- print("Mem: %lluk total, %lluk used, %lluk free "
- "CPUs: %u @ %lluMHz\n",
+ if ( freeable_mb <= 0 )
+ print("Mem: %lluk total, %lluk used, %lluk free ",
xenstat_node_tot_mem(cur_node)/1024, used/1024,
- xenstat_node_free_mem(cur_node)/1024,
+ xenstat_node_free_mem(cur_node)/1024);
+ else
+ print("Mem: %lluk total, %lluk used, %lluk free, %ldk freeable, ",
+ xenstat_node_tot_mem(cur_node)/1024, used/1024,
+ xenstat_node_free_mem(cur_node)/1024, freeable_mb*1024);
+ print("CPUs: %u @ %lluMHz\n",
xenstat_node_num_cpus(cur_node),
xenstat_node_cpu_hz(cur_node)/1000000);
}