diff options
author | Viktor Mihajlovski <mihajlov@linux.vnet.ibm.com> | 2012-10-16 16:05:13 +0200 |
---|---|---|
committer | Eric Blake <eblake@redhat.com> | 2012-10-23 18:48:06 -0600 |
commit | 08842171d4c02a16db9adde91fade083349229ab (patch) | |
tree | 039d0cc8ceac90100a7ff03c5ef4798b00805319 | |
parent | d39291d4c016aa1dfeacca083a7fc31d1e4c976d (diff) | |
download | libvirt-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.c | 40 | ||||
-rw-r--r-- | tools/virsh.pod | 5 |
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. |