Re: What time is it kvm-clock?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Tue, Feb 23, 2016 at 7:57 PM, Marcelo Tosatti <mtosatti@xxxxxxxxxx> wrote:
> On Tue, Feb 23, 2016 at 06:31:59PM -0800, Owen Hofmann wrote:
>> Specifically, what underlying source of time should be exposed through
>> kvm-clock and other paravirtual ABIs like the HyperV reference tsc
>> page?  Recently a couple of threads on kvm-list, along with attempts
>> to produce reliable behavior from kvm-clock on our systems have
>> highlighted a tension between the current implementation of kvm-clock
>> and potentially diverging goals for paravirt time. Here are a few:
>>
>> 1) kvmclock doesn't work, help?: http://www.spinics.net/lists/kvm/msg125039.html
>> 2) kvmclock: improve accuracy: http://www.spinics.net/lists/kvm/msg127215.html
>> 3) KVM-clock: http://www.spinics.net/lists/kvm/msg127774.html
>>
>> This question is mostly in regards to kvm-clock in masterclock mode
>> (with PVCLOCK_TSC_STABLE set). In this mode, is kvm-clock intended to
>> expose a source of time that is more 'true' than the underlying TSC?
>> For example, by passing through NTP correction from the host. For the
>> current implementation, the answer seems to be... why not both? Once
>> programmed, kvm-clock or the HyperV TSC page will advance with the TSC
>> multiplied by the frequency specified by kvm. On the other hand,
>> KVM_GET_CLOCK, KVM_SET_CLOCK, and the Windows reference counter MSR
>> are measured against corrected time from the host. A guest reading its
>> pvclock gets a very different result from a host KVM_GET_CLOCK if the
>> guest has run long enough to for TSC to diverge from NTP time. A VMM
>> using these ioctls to save and restore clock state can produce wild
>> time jumps from the guest's perspective.
>>
>> The patches in (2) address this mismatch by plumbing updates to clock
>> frequency through kvm-clock to the guest. This seems like an important
>> design choice for kvm-clock, and IMO deserves at least a clear
>> statement of the goals for this interface, if not some more
>> discussion.
>
> Design goals of what interface? KVM_GET_CLOCK / KVM_SET_CLOCK?
>
> The interfaces have been introduced to fix a bug.
>
>> The (later) thread in (3) claims that synchronizing with
>> host time is *not* a goal of kvm-clock.
>
> It is not.
>
>> To me, kvm-clock and the HyperV TSC page are extremely effective as
>> simply a more enlightened path to the host TSC. Maintaining a
>> high-performance path to the TSC in the face of updates is tricky -
>> see the extended comment in pvclock_update_vm_gtod_copy, or the
>> discussion on the patchset in (2). Is the cost of auditing that the
>> path from host gettimeofday update -> kvm -> guest pvclock -> guest
>> gettimeofday both tracks host time correctly and does not produce any
>> backwards warps worth the added value, if it exists? As an
>> alternative, implementing KVM_GET_CLOCK or the reference time MSR as a
>> function of the last update to kvm-clock or the reference TSC page,
>> respectively, sounds very straightforward.
>>
>> (Outside of masterclock mode, the requirement that the client
>> synchronizes across cpus for montonicity smoothes over a lot of
>> complexity - periodically updating kvm-clock to the current time is
>> simple and works.)
>>
>> Regardless of my opinion, I think that a clear statement of the design
>> goals for kvm-clock (and kvm's implementation of the reference TSC
>> page) would be valuable.
>
> Documentation/virtual/kvm/timekeeping.txt
>

Hi Marcelo,

While I appreciate all of the detail in timekeeping.txt, it is not a
very good reference for what kvm-clock is or how it works. kvm-clock
is only mentioned three times in different places throughout that
document, and nowhere is there a very clear statement of what
kvm-clock is supposed to do or how it does it.

For somebody that does not already have a deep understanding of the
core masterclock code, trying to understand how kvm-clock works is a
real challenge.

Thanks,
Peter
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [KVM ARM]     [KVM ia64]     [KVM ppc]     [Virtualization Tools]     [Spice Development]     [Libvirt]     [Libvirt Users]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite Questions]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux