xend: Add free memory size of every node in physinfo to help user to

get usage of memory of their NUMA machine.

Signed-off-by: Duan Ronghui <ronghui.duan@intel.com>
This commit is contained in:
Keir Fraser committed 2008-02-26 15:00:08 +00:00
1 parent be2808a3bf
commit 44bdf09e2c
2 files changed
+29 -2

No files matched your search

+12 -1
View File
@@ -764,7 +764,8 @@ static PyObject *pyxc_physinfo(XcObject *self)
xc_physinfo_t info;
char cpu_cap[128], *p=cpu_cap, *q=cpu_cap;
int i, j, max_cpu_id;
PyObject *ret_obj, *node_to_cpu_obj;
uint64_t free_heap;
PyObject *ret_obj, *node_to_cpu_obj, *node_to_memory_obj;
xc_cpu_to_node_t map[MAX_CPU_ID + 1];
set_xen_guest_handle(info.cpu_to_node, map);
@@ -812,7 +813,17 @@ static PyObject *pyxc_physinfo(XcObject *self)
PyList_Append(node_to_cpu_obj, cpus);
}
node_to_memory_obj = PyList_New(0);
for ( i = 0; i < info.nr_nodes; i++ )
{
xc_availheap(self->xc_handle, 0, 0, i, &free_heap);
PyList_Append(node_to_memory_obj,
PyInt_FromLong(free_heap / 1024));
}
PyDict_SetItemString(ret_obj, "node_to_cpu", node_to_cpu_obj);
PyDict_SetItemString(ret_obj, "node_to_memory", node_to_memory_obj);
return ret_obj;
#undef MAX_CPU_ID
+17 -1
View File
@@ -573,6 +573,20 @@ class XendNode:
except:
str='none\n'
return str[:-1];
def format_node_to_memory(self, pinfo):
str=''
whitespace=''
try:
node_to_memory=pinfo['node_to_memory']
for i in range(0, pinfo['nr_nodes']):
str+='%snode%d:%d\n' % (whitespace,
i,
node_to_memory[i] / 1024)
whitespace='%25s' % ''
except:
str='none\n'
return str[:-1];
def physinfo(self):
info = self.xc.physinfo()
@@ -583,6 +597,7 @@ class XendNode:
info['total_memory'] = info['total_memory'] / 1024
info['free_memory'] = info['free_memory'] / 1024
info['node_to_cpu'] = self.format_node_to_cpu(info)
info['node_to_memory'] = self.format_node_to_memory(info)
ITEM_ORDER = ['nr_cpus',
'nr_nodes',
@@ -592,7 +607,8 @@ class XendNode:
'hw_caps',
'total_memory',
'free_memory',
'node_to_cpu'
'node_to_cpu',
'node_to_memory'
]
return [[k, info[k]] for k in ITEM_ORDER]
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.