[Libvir] Add a timestamp to virDomainInfo ?

Daniel P. Berrange berrange at redhat.com
Thu Apr 13 21:37:17 UTC 2006

On Thu, Apr 13, 2006 at 04:44:40PM -0400, Daniel Veillard wrote:
> On Thu, Apr 13, 2006 at 06:49:33PM +0100, Daniel P. Berrange wrote:
> > The primary use of the virDomainInfo data is in calculating resource
> > utilization over time. The CPU runtime data, however, is represented
> > as a counter, so to calulate utilization requires some transformations.
> > Basically subtract the CPU runtime value for time X, from the value
> > at time Y, and divide the result by Y-X. Obviously this requires us to
> > know the times X & Y. Currently the virDomainInfo structure does not
> > contain this information though, so apps have to call something like
> > gettimeofday() before virDomainGetInfo(), to record the timestamp of each
> > virDomainInfo record.
> > 
> > The problem is that this is a pretty poor approximation - particularly
> > if libvirt is talking via XenD, a non-trivial period of time can pass
> > between the call to gettimeofday() and the values for virDomainInfo 
> > actually sampled.
>   the fact that libvirt does it or the application does it generate the
> exact same incertitude. You won't get any added precision really...
> > Thus I would like to suggest that the virtDomainInfo structure be expanded
> > to add an extra data field of type 'struct timeval' to record a high
> > resolution timestamp. Now currently this wouldn't help accuracy all that 
> > much, since libvirt would still be filling this in much the same way as
> > the app did. It does however, open the door to having Xen itself provide
> > an accurate timestamp back to libvirt, which would in turn benefit apps
> > without requiring further code change.
>   In practice this forces libvir to make one extra syscall for all sampling
> even if the application is not interested in such a timestamp. I find this
> a bit dubious honnestly. It would make some sense only if the timestamp is
> actually added at the protocol level, best is to ask on xen-devel, if
> there is a positive feedback then okay why not. But to me this just won't
> work in the general case, if you extract the informations from the Xen Store
> this mean multiple RPCs to get back the informations which one should be
> used for the timestamp ?
>   In practice what kind of deviation are you seeing ? If you're afraid of
> network induced delays ? Please explain with some concrete actual numbers
> because I'm not convinced myself, and it would help also convince people
> on xen-devel this is actually needed.
>   Basically if doing the RPC(s) takes a millisecond, then you're in troubles
> anyway because that means 1ms of active CPU time, and the more you sample
> to get accuracy, the more you generate artefact. Adding the timestamp makes
> sense only if the time to process is large and you want accuracy, i.e.
> sampling often, but high latency, and in that case the simple fact of sampling
> often kills any precision you may hope to get, so my gut feeling is that
> this is not useful in practice, but doing so increase the cost of the operation
> even in the fast case or when not needed. Data would help convince me :-)

I've not really got any formal data on it at this time - it was just a random
afternoon thought. I'll see if there's any useful way to get some data on
the effects.

|=- Red Hat, Engineering, Emerging Technologies, Boston.  +1 978 392 2496 -=|
|=-           Perl modules: http://search.cpan.org/~danberr/              -=|
|=-               Projects: http://freshmeat.net/~danielpb/               -=|
|=-  GnuPG: 7D3B9505   F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505  -=| 

More information about the libvir-list mailing list