From mboxrd@z Thu Jan 1 00:00:00 1970 From: Marcelo Tosatti Subject: Re: Monotonic clock with KVM pv-clock Date: Mon, 20 Jan 2014 11:33:17 -0200 Message-ID: <20140120133317.GA7509@amt.cnet> References: <20140120095656.GA1282@fermat.math.technion.ac.il> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: QUOTED-PRINTABLE Cc: kvm@vger.kernel.org To: "Nadav Har'El" Return-path: Received: from mx1.redhat.com ([209.132.183.28]:1918 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751976AbaATNo7 (ORCPT ); Mon, 20 Jan 2014 08:44:59 -0500 Content-Disposition: inline In-Reply-To: <20140120095656.GA1282@fermat.math.technion.ac.il> Sender: kvm-owner@vger.kernel.org List-ID: On Mon, Jan 20, 2014 at 11:56:56AM +0200, Nadav Har'El wrote: > Hi, >=20 > I'm trying to figure out how a guest OS can get a monotonic clock usi= ng > KVM's paravirtual clock. >=20 > At first, I thought that the clock I get using KVM_SYSTEM_TIME is a > monotonic clock, based on the host's monotonic clock. It is. However, it is used in conjunction with TSC delta, part of the structure which is written at KVM_SYSTEM_TIME GPA. See pvclock_clocksource_read at arch/x86/kernel/pvclock.c. > But I'm no longer sure this is actually done correctly: >=20 > 1. What happens on live migration? On the new host, will the > KVM_SYSTEM_TIME continue from the same point?=20 Yes, from the same point where the VM was stopped on the source. > Or will it jump because > KVM_WALL_CLOCK (the wall time during boot) is different on the new= host? No, it won't, see the kernel commit which introduces KVM_SET_CLOCK/KVM_GET_CLOCK. > 2. What happens when the wall-clock time is set on the host? I was > hoping that only KVM_WALL_CLOCK changes and KVM_SYSTEM_TIME doesn'= t, > but am no longer sure this is actually the case. Yes, it is the case. The host clock which backs system_timestamp field of pvclock structure is =20 CLOCK_MONOTONIC Clock that cannot be set and represents monotonic time since some unspecified starting point. This clock is not affected by discontinuous jumps in the system time (e.g., if the system administrator manually changes the clock), but is affected by the incremental adjustments per=E2=80=90formed by adjtime(3) and NTP. > If KVM_SYSTEM_TIME is not a correct way to get a monotonic paravirtua= l clock > from KVM, is there a correct way? Inside a Linux guest? Can use sched_clock(). If not a Linux guest, either implement kvmclock-like driver (kvm-unit-test contains one). >=20 > Thanks, > Nadav. >=20 > --=20 > Nadav Har'El | Monday, Jan 20 2014, 19 Sh= evat 5774 > nyh@math.technion.ac.il |--------------------------------= --------- > Phone +972-523-790466, ICQ 13349191 |Diplomat: A man who always remem= bers a > http://nadav.harel.org.il |woman's birthday but never her a= ge.