All of lore.kernel.org
 help / color / mirror / Atom feed
From: Roman Kagan <rkagan@virtuozzo.com>
To: "Radim Krčmář" <rkrcmar@redhat.com>
Cc: Eduardo Habkost <ehabkost@redhat.com>,
	kvm@vger.kernel.org, Juan Quintela <quintela@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	qemu-devel <qemu-devel@nongnu.org>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Paolo Bonzini <pbonzini@redhat.com>
Subject: Re: [QEMU PATCH] kvmclock: advance clock by time window between vm_stop and pre_save
Date: Mon, 7 Nov 2016 17:31:49 +0300	[thread overview]
Message-ID: <20161107143148.GA2199@rkaganb.sw.ru> (raw)
In-Reply-To: <20161104171605.GE5388@potion>

On Fri, Nov 04, 2016 at 06:16:06PM +0100, Radim Krčmář wrote:
> 2016-11-04 16:57+0100, Paolo Bonzini:
> > On 04/11/2016 16:48, Radim Krčmář wrote:
> >> 2016-11-04 16:33+0100, Paolo Bonzini:
> >>> On 04/11/2016 16:25, Radim Krčmář wrote:
> >>>>>>  
> >>>>>> +        if (s->advance_clock && s->clock + s->advance_clock > s->clock) {
> >>>>>> +            s->clock += s->advance_clock;
> >>>>>> +            s->advance_clock = 0;
> >>>>>> +        }
> >>>> Can't the advance_clock added to the migrated KVMClockState instead of
> >>>> passing it as another parameter?
> >>>>
> >>>> (It is sad that we can't just query KVMClockState in kvmclock_pre_save
> >>>>  because of the Linux bug.)
> >>>
> >>> What Linux bug?  The one that makes us use kvmclock_current_nsec?
> >> 
> >> No, the one that forced Marcelo to add the 10 minute limit to the
> >> advance_clock.  We wouldn't need this advance_clock hack if we could
> >> just call KVM_GET_CLOCK like we did before 00f4d64ee76e ("kvmclock:
> >> clock should count only if vm is running").
> > 
> > There are two cases:
> > 
> > - migrating a paused guest
> > 
> > - pausing at the end of migration
> > 
> > In the first case, kvmclock_vm_state_change's !running branch will see
> > state == RUN_STATE_FINISH_MIGRATE && s->clock_valid.  In the second
> > case, it will see state == RUN_STATE_FINISH_MIGRATE && !s->clock_valid.
> 
> I lift my case, marcelo's said that stopping the time is a feature ...
> (*kittens die*)

Sorry to chime in in the middle of the thread, but I wonder how happy
the guests are with this behavior.  Intuitively pausing or snapshotting
feels like closing the lid of a laptop, so every time I see the guest
waking up in the past after a pause I get confused.  It may also be
unexpected by Windows guests who never had this overflow problem but
now, being tied up with kvmclock, have to stop the time while in pause,
too.

Roman.

WARNING: multiple messages have this Message-ID (diff)
From: Roman Kagan <rkagan@virtuozzo.com>
To: "Radim Krčmář" <rkrcmar@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Marcelo Tosatti <mtosatti@redhat.com>,
	kvm@vger.kernel.org, qemu-devel <qemu-devel@nongnu.org>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Juan Quintela <quintela@redhat.com>,
	Eduardo Habkost <ehabkost@redhat.com>
Subject: Re: [Qemu-devel] [QEMU PATCH] kvmclock: advance clock by time window between vm_stop and pre_save
Date: Mon, 7 Nov 2016 17:31:49 +0300	[thread overview]
Message-ID: <20161107143148.GA2199@rkaganb.sw.ru> (raw)
In-Reply-To: <20161104171605.GE5388@potion>

On Fri, Nov 04, 2016 at 06:16:06PM +0100, Radim Krčmář wrote:
> 2016-11-04 16:57+0100, Paolo Bonzini:
> > On 04/11/2016 16:48, Radim Krčmář wrote:
> >> 2016-11-04 16:33+0100, Paolo Bonzini:
> >>> On 04/11/2016 16:25, Radim Krčmář wrote:
> >>>>>>  
> >>>>>> +        if (s->advance_clock && s->clock + s->advance_clock > s->clock) {
> >>>>>> +            s->clock += s->advance_clock;
> >>>>>> +            s->advance_clock = 0;
> >>>>>> +        }
> >>>> Can't the advance_clock added to the migrated KVMClockState instead of
> >>>> passing it as another parameter?
> >>>>
> >>>> (It is sad that we can't just query KVMClockState in kvmclock_pre_save
> >>>>  because of the Linux bug.)
> >>>
> >>> What Linux bug?  The one that makes us use kvmclock_current_nsec?
> >> 
> >> No, the one that forced Marcelo to add the 10 minute limit to the
> >> advance_clock.  We wouldn't need this advance_clock hack if we could
> >> just call KVM_GET_CLOCK like we did before 00f4d64ee76e ("kvmclock:
> >> clock should count only if vm is running").
> > 
> > There are two cases:
> > 
> > - migrating a paused guest
> > 
> > - pausing at the end of migration
> > 
> > In the first case, kvmclock_vm_state_change's !running branch will see
> > state == RUN_STATE_FINISH_MIGRATE && s->clock_valid.  In the second
> > case, it will see state == RUN_STATE_FINISH_MIGRATE && !s->clock_valid.
> 
> I lift my case, marcelo's said that stopping the time is a feature ...
> (*kittens die*)

Sorry to chime in in the middle of the thread, but I wonder how happy
the guests are with this behavior.  Intuitively pausing or snapshotting
feels like closing the lid of a laptop, so every time I see the guest
waking up in the past after a pause I get confused.  It may also be
unexpected by Windows guests who never had this overflow problem but
now, being tied up with kvmclock, have to stop the time while in pause,
too.

Roman.

  parent reply	other threads:[~2016-11-07 14:31 UTC|newest]

Thread overview: 80+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-04  9:43 [QEMU PATCH] kvmclock: advance clock by time window between vm_stop and pre_save Marcelo Tosatti
2016-11-04  9:43 ` [Qemu-devel] " Marcelo Tosatti
2016-11-04 12:28 ` Juan Quintela
2016-11-04 12:28   ` [Qemu-devel] " Juan Quintela
2016-11-04 12:35   ` Marcelo Tosatti
2016-11-04 12:35     ` [Qemu-devel] " Marcelo Tosatti
2016-11-04 14:00     ` Marcelo Tosatti
2016-11-04 14:00       ` [Qemu-devel] " Marcelo Tosatti
2016-11-04 15:25 ` Radim Krčmář
2016-11-04 15:25   ` [Qemu-devel] " Radim Krčmář
2016-11-04 15:33   ` Paolo Bonzini
2016-11-04 15:33     ` [Qemu-devel] " Paolo Bonzini
2016-11-04 15:48     ` Radim Krčmář
2016-11-04 15:48       ` [Qemu-devel] " Radim Krčmář
2016-11-04 15:57       ` Paolo Bonzini
2016-11-04 15:57         ` [Qemu-devel] " Paolo Bonzini
2016-11-04 17:16         ` Radim Krčmář
2016-11-04 17:16           ` [Qemu-devel] " Radim Krčmář
2016-11-04 21:29           ` Paolo Bonzini
2016-11-04 21:29             ` [Qemu-devel] " Paolo Bonzini
2016-11-04 21:47             ` Marcelo Tosatti
2016-11-04 21:47               ` [Qemu-devel] " Marcelo Tosatti
2016-11-04 22:35               ` Paolo Bonzini
2016-11-04 22:35                 ` [Qemu-devel] " Paolo Bonzini
2016-11-07 14:31           ` Roman Kagan [this message]
2016-11-07 14:31             ` Roman Kagan
2016-11-07 19:31             ` Marcelo Tosatti
2016-11-07 19:31               ` [Qemu-devel] " Marcelo Tosatti
2016-11-04 16:24       ` Marcelo Tosatti
2016-11-04 16:24         ` [Qemu-devel] " Marcelo Tosatti
2016-11-04 17:34         ` Radim Krčmář
2016-11-04 17:34           ` [Qemu-devel] " Radim Krčmář
2016-11-04 18:29           ` Marcelo Tosatti
2016-11-04 18:29             ` [Qemu-devel] " Marcelo Tosatti
2016-11-04 20:07             ` Radim Krčmář
2016-11-04 20:07               ` [Qemu-devel] " Radim Krčmář
2016-11-04 16:04   ` Marcelo Tosatti
2016-11-04 16:04     ` [Qemu-devel] " Marcelo Tosatti
2016-11-04 17:07   ` Marcelo Tosatti
2016-11-04 17:07     ` [Qemu-devel] " Marcelo Tosatti
2016-11-04 17:39     ` Radim Krčmář
2016-11-04 17:39       ` [Qemu-devel] " Radim Krčmář
2016-11-04 18:31       ` Marcelo Tosatti
2016-11-04 18:31         ` [Qemu-devel] " Marcelo Tosatti
2016-11-07 13:08       ` Dr. David Alan Gilbert
2016-11-07 13:08         ` [Qemu-devel] " Dr. David Alan Gilbert
2016-11-04 16:59 ` [QEMU PATCH v2] " Marcelo Tosatti
2016-11-04 16:59   ` [Qemu-devel] " Marcelo Tosatti
2016-11-04 18:57   ` Juan Quintela
2016-11-04 18:57     ` [Qemu-devel] " Juan Quintela
2016-11-07 15:46   ` Dr. David Alan Gilbert
2016-11-07 15:46     ` [Qemu-devel] " Dr. David Alan Gilbert
2016-11-07 19:41     ` Marcelo Tosatti
2016-11-07 19:41       ` [Qemu-devel] " Marcelo Tosatti
2016-11-07 20:03       ` Dr. David Alan Gilbert
2016-11-07 20:03         ` [Qemu-devel] " Dr. David Alan Gilbert
2016-11-08  0:06         ` Marcelo Tosatti
2016-11-08  0:06           ` [Qemu-devel] " Marcelo Tosatti
2016-11-08 10:22           ` Dr. David Alan Gilbert
2016-11-08 10:22             ` [Qemu-devel] " Dr. David Alan Gilbert
2016-11-08 13:32             ` Marcelo Tosatti
2016-11-08 13:32               ` [Qemu-devel] " Marcelo Tosatti
2016-11-09 19:32               ` Marcelo Tosatti
2016-11-09 19:32                 ` [Qemu-devel] " Marcelo Tosatti
2016-11-09 16:23             ` Paolo Bonzini
2016-11-09 16:23               ` [Qemu-devel] " Paolo Bonzini
2016-11-09 16:28               ` Dr. David Alan Gilbert
2016-11-09 16:28                 ` [Qemu-devel] " Dr. David Alan Gilbert
2016-11-09 16:33                 ` Paolo Bonzini
2016-11-09 16:33                   ` [Qemu-devel] " Paolo Bonzini
2016-11-10 11:48               ` Marcelo Tosatti
2016-11-10 11:48                 ` [Qemu-devel] " Marcelo Tosatti
2016-11-10 17:57                 ` Paolo Bonzini
2016-11-10 17:57                   ` [Qemu-devel] " Paolo Bonzini
2016-11-11 14:23                   ` Marcelo Tosatti
2016-11-11 14:23                     ` [Qemu-devel] " Marcelo Tosatti
2017-02-07 10:02       ` Wanpeng Li
2017-02-07 10:02         ` [Qemu-devel] " Wanpeng Li
2017-02-07 12:18         ` Marcelo Tosatti
2017-02-07 12:18           ` [Qemu-devel] " 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=20161107143148.GA2199@rkaganb.sw.ru \
    --to=rkagan@virtuozzo.com \
    --cc=dgilbert@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=kvm@vger.kernel.org \
    --cc=mtosatti@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=rkrcmar@redhat.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.