[libvirt-users] questions on clock catchup

Daniel P. Berrange berrange at redhat.com
Thu Mar 13 11:35:46 UTC 2014


On Thu, Mar 13, 2014 at 05:26:05AM -0600, Eric Blake wrote:
> On 03/13/2014 12:49 AM, Jincheng Miao wrote:
> > In http://libvirt.org/formatdomain.html#elementsTime , we could find there are
> > three attributes of catchup tickpolicy: limit, threshold and slew.
> > 
> > "
> > The catchup element has three optional attributes, each a positive integer.
> > The attributes are threshold, slew, and limit.
> > "
> > The xml format likes:
> >   <clock offset='utc'>
> >     <timer name='rtc' tickpolicy='catchup'>
> >       <catchup slew='123'/> or <catchup threshold='123'/> or <catchup limit='123'/>
> >     </timer>
> >   </clock>
> > 
> > But there is no further explanation.
> > Does anyone know what's the meaning of these attributes ?
> 
> We ought to copy the documentation that qemu just added:
> 
> # Policy for handling lost ticks in timer devices.
> #
> # @discard: throw away the missed tick(s) and continue with future injection
> #           normally.  Guest time may be delayed, unless the OS has explicit
> #           handling of lost ticks
> #
> # @delay: continue to deliver ticks at the normal rate.  Guest time will be
> #         delayed due to the late tick
> #
> # @merge: merge the missed tick(s) into one tick and inject.  Guest time
> #         may be delayed, depending on how the OS reacts to the merging
> #         of ticks
> #
> # @slew: deliver ticks at a higher rate to catch up with the missed
> tick. The
> #        guest time should not be delayed once catchup is complete.

We've got docs about the various policies already, in that link above.
What's missing is explanation of thee <catchup> sub-element attributes.
These were added in

commit 4ee2b31804f4d3477ee83bac28d9991afb0c3393
Author: Laine Stump <laine at laine.org>
Date:   Wed Mar 31 13:03:54 2010 -0400

    Changes to clock timer XML to match final design.
    
    The clock timer XML is being updated in the following ways (based on
    further off-list discussion that was missed during the initial
    implementation):
    
    1) 'wallclock' is changed to 'track', and the possible values are 'boot'
     (corresponds to old 'host'), 'guest', and 'wall'.
    
    2) 'mode' has an additional value 'smpsafe'
    
    3) when tickpolicy='catchup', there can be an optional sub-element of
       timer called 'catchup':
    
       <catchup threshold=123 slew=120 limit=10000/>
    
    Those three values are all longs, always optional, and if they are present,
    they are positive. Internally, 0 indicates "unspecified".
    

Even more strangely AFAICT, nothing in any libvirt driver ever uses
the threshold/slew/limit values, so I'm wondering why we added them
to the XML....


Regards,
Daniel
-- 
|: http://berrange.com      -o-    http://www.flickr.com/photos/dberrange/ :|
|: http://libvirt.org              -o-             http://virt-manager.org :|
|: http://autobuild.org       -o-         http://search.cpan.org/~danberr/ :|
|: http://entangle-photo.org       -o-       http://live.gnome.org/gtk-vnc :|




More information about the libvirt-users mailing list