|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH v10 3/9] vnuma hook to debug-keys u
Add debug-keys hook to display vnuma topology.
Signed-off-by: Elena Ufimtseva <ufimtseva@xxxxxxxxx>
---
xen/arch/x86/numa.c | 32 +++++++++++++++++++++++++++++++-
1 file changed, 31 insertions(+), 1 deletion(-)
diff --git a/xen/arch/x86/numa.c b/xen/arch/x86/numa.c
index 555276e..346725f 100644
--- a/xen/arch/x86/numa.c
+++ b/xen/arch/x86/numa.c
@@ -347,10 +347,11 @@ EXPORT_SYMBOL(node_data);
static void dump_numa(unsigned char key)
{
s_time_t now = NOW();
- int i;
+ int i, j, err, n;
struct domain *d;
struct page_info *page;
unsigned int page_num_node[MAX_NUMNODES];
+ uint64_t mem;
printk("'%c' pressed -> dumping numa info (now-0x%X:%08X)\n", key,
(u32)(now>>32), (u32)now);
@@ -389,6 +390,35 @@ static void dump_numa(unsigned char key)
for_each_online_node(i)
printk(" Node %u: %u\n", i, page_num_node[i]);
+
+ if (!d->vnuma)
+ continue;
+
+ printk(" %u vnodes, %u vcpus\n", d->vnuma->nr_vnodes, d->max_vcpus);
+ for (i = 0; i < d->vnuma->nr_vnodes; i++) {
+ err = snprintf(keyhandler_scratch, 12, "%u",
+ d->vnuma->vnode_to_pnode[i]);
+ if (err < 0 || d->vnuma->vnode_to_pnode[i] == NUMA_NO_NODE)
+ snprintf(keyhandler_scratch, 3, "???");
+
+ printk(" vnode %3u - pnode %s,", i, keyhandler_scratch);
+ mem = d->vnuma->vmemrange[i].end - d->vnuma->vmemrange[i].start;
+ printk(" %"PRIu64" MB, ", mem >> 20);
+
+ printk("vcpu nrs: ");
+ for (j = 0, n = 0; j < d->max_vcpus; j++) {
+ if (d->vnuma->vcpu_to_vnode[j] == i) {
+ if ( ((n + 1) % 8) == 0 )
+ printk("%d\n", j);
+ else if ( !(n % 8) && n != 0 )
+ printk("%s%d ", " ", j);
+ else
+ printk("%d ", j);
+ n++;
+ }
+ }
+ printk("\n");
+ }
}
rcu_read_unlock(&domlist_read_lock);
--
1.7.10.4
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |