Hi, Matthias. On Fri, 1 Apr 2011 20:22:17 +0200 Matthias Bolte <matthias.bolte@xxxxxxxxxxxxxx> wrote: > 2011/4/1 Eric Blake <eblake@xxxxxxxxxx>: > > On 03/31/2011 07:55 PM, Minoru Usui wrote: > >> virNodeGetCpuTime: Expose new API > >> > >> Âinclude/libvirt/libvirt.h.in |  26 ++++++++++++++++++++++++++ > >> Âsrc/libvirt_public.syms   Â|  Â1 + > >> Â2 files changed, 27 insertions(+), 0 deletions(-) > > > >> > >> +/** > >> + * virNodeCpuTime: > >> + * > >> + * a virNodeCpuTime is a structure filled by virNodeGetCpuTime() and providing > >> + * the information for the cpu time of Node. > >> + */ > >> + > >> +typedef struct _virNodeCpuTime virNodeCpuTime; > >> + > >> +struct _virNodeCpuTime { > >> +  Âunsigned long long user; > >> +  Âunsigned long long system; > >> +  Âunsigned long long idle; > >> +  Âunsigned long long iowait; > >> +}; > > > > Can we portably get all of this information on Windows? ÂIf not, how do > > you express which values we don't know how to obtain? > > > > In the context of ESX I vote against this absolute CPU time values. > ESX provides this values relative to a 20 second timeslots with 1 hour > of history. This makes it nearly impossible to obtain the absolute CPU > time. The same problem already exists for the domain's virtual CPU > time. > > When you look at virt-top's usage of the domain's virtual CPU time, > you see that it actually doesn't really care about the absolute value, > but deduces the CPU utilization from it. I suggest that we find a > different representation for this information that is not by > definition impossible to implement for ESX. > > Matthias I didn't know ESX couldn't return absolute CPU time value. Thank you for your comment. We really want to get CPU utilization information of the node, not absolute CPU time values. But linux doesn't provide CPU utilization directly, so my patch returns absolute CPU time values, and CPU utilization is calculated by client which uses new API. To return CPU utilization by new API, I think there are two issues of implementing on linux. a) How much interval does calculate CPU utilization? To calculate CPU utilization on linux, we need to get absolute CPU time value of the node from /proc/stat two times. How much interval properly? 1sec? 1min? or others? b) Can new API wait its interval? If we select simply implementation, new API waits its interval. But API user don't want to wait every API calls, if its interval is long. So I think libvirtd will be calculating CPU utilization in background every interval. Is this approach OK? -- Minoru Usui <usui@xxxxxxxxxxxxxxxxx> -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list