On Wed, Mar 25, 2015 at 19:39:12 +0100, Ján Tomko wrote: > Add cpuTime to virDomainIOThreadInfo, fill it out in the qemu driver > and print it in virsh. > --- > daemon/remote.c | 1 + > include/libvirt/libvirt-domain.h | 1 + > src/qemu/qemu_driver.c | 10 ++++++++++ > src/remote/remote_driver.c | 1 + > src/remote/remote_protocol.x | 1 + > src/remote_protocol-structs | 1 + > tools/virsh-domain.c | 18 ++++++++++++++---- > 7 files changed, 29 insertions(+), 4 deletions(-) > > diff --git a/daemon/remote.c b/daemon/remote.c > index 2f4df48..1f44ed5 100644 > --- a/daemon/remote.c > +++ b/daemon/remote.c > @@ -2317,6 +2317,7 @@ remoteDispatchDomainGetIOThreadInfo(virNetServerPtr server ATTRIBUTE_UNUSED, > */ > dst->cpumap.cpumap_len = info[i]->cpumaplen; > dst->cpumap.cpumap_val = (char *)info[i]->cpumap; > + dst->cpu_time = info[i]->cpuTime; > info[i]->cpumap = NULL; > } > } else { > diff --git a/include/libvirt/libvirt-domain.h b/include/libvirt/libvirt-domain.h > index 7be4219..cca08ca 100644 > --- a/include/libvirt/libvirt-domain.h > +++ b/include/libvirt/libvirt-domain.h > @@ -1603,6 +1603,7 @@ struct _virDomainIOThreadInfo { > unsigned char *cpumap; /* CPU map for thread. A pointer to an */ > /* array of real CPUs (in 8-bit bytes) */ > int cpumaplen; /* cpumap size */ > + unsigned long long cpuTime; /* CPU time used, in nanoseconds */ Perhaps add a note that 0 is returned for offline VMs? > }; > > void virDomainIOThreadInfoFree(virDomainIOThreadInfoPtr info); ... > diff --git a/tools/virsh-domain.c b/tools/virsh-domain.c > index cb9cb9d..929cceb 100644 > --- a/tools/virsh-domain.c > +++ b/tools/virsh-domain.c ... > @@ -6875,12 +6875,22 @@ cmdIOThreadInfo(vshControl *ctl, const vshCmd *cmd) > > vshPrint(ctl, " %-15u ", info[i]->iothread_id); > vshPrint(ctl, " %-15s ", mapstr); > + if (info[i]->cpuTime != 0) { > + double cpuUsed = info[i]->cpuTime; > + > + cpuUsed /= 1000000000.0; > + > + vshPrint(ctl, " %.1lf s ", cpuUsed); > + } Should we print a dash or something when the data is not present? > vshPrint(ctl, "\n"); > - virDomainIOThreadInfoFree(info[i]); > } > - VIR_FREE(info); > > cleanup: > + if (niothreads > 0) { > + for (i = 0; i < niothreads; i++) > + virDomainIOThreadInfoFree(info[i]); > + VIR_FREE(info); If you initialize info to NULL when it's defined you can avoid having the if (niothreads > 0) condition. > + } > virBitmapFree(map); > virDomainFree(dom); > return niothreads >= 0; ACK. I'll not insisting on fixing all the comments, but I'd prefer to have a dash in the output if CPU time doesn't make sense. Peter
Attachment:
signature.asc
Description: Digital signature
-- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list