summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorViktor Mihajlovski <mihajlov@linux.vnet.ibm.com>2012-10-16 16:05:13 +0200
committerEric Blake <eblake@redhat.com>2012-10-23 18:48:06 -0600
commit08842171d4c02a16db9adde91fade083349229ab (patch)
tree039d0cc8ceac90100a7ff03c5ef4798b00805319
parentd39291d4c016aa1dfeacca083a7fc31d1e4c976d (diff)
downloadlibvirt-08842171d4c02a16db9adde91fade083349229ab.tar.gz
virNodeGetCPUMap: Implement virsh support.v1.0.0-rc1
- Added a new host command nodecpumap - Added documentation Example: $ virsh nodecpumap CPUs present: 8 CPUs online: 3 CPU map: y-y-y--- Signed-off-by: Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com> Signed-off-by: Eric Blake <eblake@redhat.com>
-rw-r--r--tools/virsh-host.c40
-rw-r--r--tools/virsh.pod5
2 files changed, 45 insertions, 0 deletions
diff --git a/tools/virsh-host.c b/tools/virsh-host.c
index 106f5e9e0d..0f9b3f32e3 100644
--- a/tools/virsh-host.c
+++ b/tools/virsh-host.c
@@ -271,6 +271,45 @@ cmdNodeinfo(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
}
/*
+ * "nodecpumap" command
+ */
+static const vshCmdInfo info_node_cpumap[] = {
+ {"help", N_("node cpu map")},
+ {"desc", N_("Displays the node's total number of CPUs, the number of"
+ " online CPUs and the list of online CPUs.")},
+ {NULL, NULL}
+};
+
+static bool
+cmdNodeCpuMap(vshControl *ctl, const vshCmd *cmd ATTRIBUTE_UNUSED)
+{
+ int cpu, cpunum;
+ unsigned char *cpumap = NULL;
+ unsigned int online;
+ bool ret = false;
+
+ cpunum = virNodeGetCPUMap(ctl->conn, &cpumap, &online, 0);
+ if (cpunum < 0) {
+ vshError(ctl, "%s", _("Unable to get cpu map"));
+ goto cleanup;
+ }
+
+ vshPrint(ctl, "%-15s %d\n", _("CPUs present:"), cpunum);
+ vshPrint(ctl, "%-15s %d\n", _("CPUs online:"), online);
+
+ vshPrint(ctl, "%-15s ", _("CPU map:"));
+ for (cpu = 0; cpu < cpunum; cpu++)
+ vshPrint(ctl, "%c", VIR_CPU_USED(cpumap, cpu) ? 'y' : '-');
+ vshPrint(ctl, "\n");
+
+ ret = true;
+
+ cleanup:
+ VIR_FREE(cpumap);
+ return ret;
+}
+
+/*
* "nodecpustats" command
*/
static const vshCmdInfo info_nodecpustats[] = {
@@ -1046,6 +1085,7 @@ const vshCmdDef hostAndHypervisorCmds[] = {
{"hostname", cmdHostname, NULL, info_hostname, 0},
{"node-memory-tune", cmdNodeMemoryTune,
opts_node_memory_tune, info_node_memory_tune, 0},
+ {"nodecpumap", cmdNodeCpuMap, NULL, info_node_cpumap, 0},
{"nodecpustats", cmdNodeCpuStats, opts_node_cpustats, info_nodecpustats, 0},
{"nodeinfo", cmdNodeinfo, NULL, info_nodeinfo, 0},
{"nodememstats", cmdNodeMemStats, opts_node_memstats, info_nodememstats, 0},
diff --git a/tools/virsh.pod b/tools/virsh.pod
index 8a30ce25e6..76f32c2399 100644
--- a/tools/virsh.pod
+++ b/tools/virsh.pod
@@ -277,6 +277,11 @@ and size of the physical memory. The output corresponds to virNodeInfo
structure. Specifically, the "CPU socket(s)" field means number of CPU
sockets per NUMA cell.
+=item B<nodecpumap>
+
+Displays the node's total number of CPUs, the number of online CPUs
+and the list of online CPUs.
+
=item B<nodecpustats> [I<cpu>] [I<--percent>]
Returns cpu stats of the node.