From: "Radim Krčmář" <rkrcmar@redhat.com>
To: Avi Cohen <avi.cohen@huawei.com>
Cc: "kvm@vger.kernel.org" <kvm@vger.kernel.org>
Subject: Re: KVM-Clock
Date: Tue, 23 Feb 2016 18:51:31 +0100 [thread overview]
Message-ID: <20160223175130.GA3164@potion.brq.redhat.com> (raw)
In-Reply-To: <B84047ECBD981D4B93EAE5A6245AA361995D20@lhreml501-mbb>
Please read https://en.wikipedia.org/wiki/Posting_style or related
documents on email quoting.
2016-02-23 07:11+0000, Avi Cohen:
>> 2016-02-21 16:57+0000, Avi Cohen:
>>> Hello,
>>>
>>> Last week I've sent a mail regarding the kvm-clock accuracy.
>>> Now I try to draw-up my question again, any answer/partial/hint is
>>> greatly appreciated
>>>
>>> Our application is running in a Tenant's Virtual Machine in a data-centre.
>>> We have some OAM functions running in the VMs.
>>> One OAM function is to measure one-way delay between VMa and VMb.
>>> One way delay measurement requires that all machines should be synchronized to a common central clock.
>>> Accuracy requirement is in order of 10s nano-seconds, hence only the 1588v2/PTP is suitable here.
>>> Since we cannot use HW timestamping in a virtual machine (we cannot force using SR-IOV), I thought to run PTP on the physical machines and to sync the VMs to the host by the kvm-clock.
>>
>> kvmclock doesn't do synchronization with host clock or UTC.
>> kvmclock bases on host's notion of *passed* time.
>> kvmclock allows the guest to measure a flow of time.
>>
>> It is another layer's job to translate kvmclock result into a timestamp that can be compared. kvmclock was designed like that, because KVM wants to make a guest independent on hosts.
>
> I see the system time written by KVM whenever the VM is entered - in kvm_guest_time_update()
>
> How can the guest (or another layer's job ) - translate kvmclock result into a timestamp that can be compared ?
If the layer has a good idea about the number of ticks the second takes
on both clocks, then the layer is synchronized with a
(time on one clock, time on second clock) pair.
You get a timestamp comparable with the other clock by providing a
timestamp from one of synchronized clocks.
The hard part is getting the pair. (A duration of the second is pretty
stable and the pair needs to be renewed on a change anyway.)
>> > In Theory - Is it possible to achieve 10s ns accuracy between VM clock and the host clock ?
>>
>> It is.
>
> How ? this is the only question
Look at last paragraph of my previous email.
(That one has 1 ns accuracy if KVM is using the masterclock.)
Note that it is impossible to confirm the accuracy with your measurement
because delay between sending and receiving a packet is normally *far*
longer that 100 ns.
>> > its system_time and the VM_TSC @ current time to the pvclock page , then the guest OS can calculate its current time by:
>>
>> KVM doesn't write its (= host's) system_time.
>> KVM writes *guest's* system_time. Guest's system_time at VM_TSC.
>>
>> (system_time is 0 when the VM starts. sytem_time can store ~584 years worth of nanoseconds, but using an arbitrary offset makes everything simpler. This part of kvmclock is pretty confusing, so system_time is likely the source of misunderstanding.)
>>
>> Have you read that kvmclock does synchronization with host time somewhere?
>>
> Yes - see - in vcpu_enter_guest() there is a call to kvm_guest_time_update()
>
> Which update the pvclock paget for the guest - see that it updates the system_time with the host system-time
I think you misunderstand the code, see kvmclock_offset.
system_time is incremented by a second if the host thinks that a second
has passed since last update, but that doesn't allow the guest to tell
host time.
next prev parent reply other threads:[~2016-02-23 17:51 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <B84047ECBD981D4B93EAE5A6245AA361995B00@lhreml501-mbb>
2016-02-21 16:57 ` KVM-Clock Avi Cohen
2016-02-22 20:08 ` KVM-Clock Radim Krčmář
2016-02-23 7:11 ` KVM-Clock Avi Cohen
2016-02-23 8:04 ` KVM-Clock Wanpeng Li
2016-02-23 8:18 ` KVM-Clock Avi Cohen
2016-02-23 8:38 ` KVM-Clock Avi Cohen
2016-02-23 17:51 ` Radim Krčmář [this message]
2016-02-24 10:32 ` KVM-Clock Avi Cohen
2016-02-24 12:20 ` KVM-Clock Radim Krčmář
2016-02-24 15:31 ` KVM-Clock Avi Cohen
2016-02-24 4:09 ` KVM-Clock Marcelo Tosatti
2016-02-24 8:15 ` KVM-Clock Avi Cohen
2016-02-24 11:33 ` KVM-Clock Marcelo Tosatti
2016-02-24 11:51 ` KVM-Clock Avi Cohen
2016-02-24 12:23 ` KVM-Clock Marcelo Tosatti
2016-02-24 15:27 ` KVM-Clock Avi Cohen
2016-02-24 18:08 ` KVM-Clock Marcelo Tosatti
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160223175130.GA3164@potion.brq.redhat.com \
--to=rkrcmar@redhat.com \
--cc=avi.cohen@huawei.com \
--cc=kvm@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).