qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Avi Kivity <avi@redhat.com>
To: Glauber Costa <glommer@redhat.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>,
	kvm@vger.kernel.org, qemu-devel@nongnu.org,
	jan kiszka <jan.kiszka@siemens.com>,
	Ulrich Obergfell <uobergfe@redhat.com>,
	gcosta@redhat.com
Subject: Re: [Qemu-devel] [PATCH v2 3/5] hpet 'driftfix': add fields to HPETTimer and VMStateDescription
Date: Mon, 11 Apr 2011 16:43:38 +0300	[thread overview]
Message-ID: <4DA3058A.6070008@redhat.com> (raw)
In-Reply-To: <1302529181.3021.13.camel@mothafucka.localdomain>

On 04/11/2011 04:39 PM, Glauber Costa wrote:
> On Mon, 2011-04-11 at 08:10 -0500, Anthony Liguori wrote:
> >  On 04/11/2011 04:08 AM, Avi Kivity wrote:
> >  >  On 04/11/2011 12:06 PM, Ulrich Obergfell wrote:
> >  >>  >>   vmstate_hpet_timer = {
> >  >>  >>             VMSTATE_UINT64(fsb, HPETTimer),
> >  >>  >>             VMSTATE_UINT64(period, HPETTimer),
> >  >>  >>             VMSTATE_UINT8(wrap_flag, HPETTimer),
> >  >>  >>   + VMSTATE_UINT64_V(saved_period, HPETTimer, 3),
> >  >>  >>   + VMSTATE_UINT64_V(ticks_not_accounted, HPETTimer, 3),
> >  >>  >>   + VMSTATE_UINT32_V(irqs_to_inject, HPETTimer, 3),
> >  >>  >>   + VMSTATE_UINT32_V(irq_rate, HPETTimer, 3),
> >  >>  >>   + VMSTATE_UINT32_V(divisor, HPETTimer, 3),
> >  >>  >
> >  >>  >   We ought to be able to use a subsection keyed off of whether any
> >  >>  ticks
> >  >>  >   are currently accumulated, no?
> >  >>
> >  >>
> >  >>  Anthony,
> >  >>
> >  >>  I'm not sure if I understand your question correctly. Are you suggesting
> >  >>  to migrate the driftfix-related state conditionally / only if there are
> >  >>  any ticks accumulated in 'ticks_not_accounted' and 'irqs_to_inject' ?
> >  >>
> >  >>  The size of the driftfix-related state is 28 bytes per timer and we have
> >  >>  32 timers per HPETState, i.e. 896 additional bytes per HPETState. With a
> >  >>  maximum number of 8 HPET blocks (HPETState), this amounts to 7168 bytes.
> >  >>  Hence, unconditional migration of the driftfix-related state should not
> >  >>  cause significant additional overhead.
> >  >>
> >  >
> >  >  It's not about overhead.
> >  >
> >  >>  Maybe I missed something. Could you please explain which benefit you see
> >  >>  in using a subsection ?
> >  >
> >  >  In the common case of there being no drift, you can migrate from a
> >  >  qemu that supports driftfix to a qemu that doesn't.
> >  >
> >
> >  Right, subsections are a trick.  The idea is that when you introduce new
> >  state for a device model that is not always going to be set, when you do
> >  the migration, you detect whether the state is set or not and if it's
> >  not set, instead of sending empty versions of that state (i.e.
> >  missed_ticks=0) you just don't send the new state at all.
> >
> >  This means that you can migrate to an older version of QEMU provided the
> >  migration would work correctly.
>
> Using subsections and testing for hpet option being disabled vs enabled,
> is fine. But checking for the existence of drift, like you suggested (or
> at least how I understood you), is very tricky. It is expected to change
> many times during guest lifetime, and would make our migration
> predictability something Heisenberg would be proud of.

First, I'd expect no drift under normal circumstances, at least without 
overcommit.  We may also allow a small amount of drift to pass migration 
(we lost time during the last phase anyway).

Second, the problem only occurs on new->old migrations.

-- 
error compiling committee.c: too many arguments to function

  reply	other threads:[~2011-04-11 13:43 UTC|newest]

Thread overview: 21+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2011-04-08 15:20 [Qemu-devel] [PATCH v2 0/5] hpet 'driftfix': alleviate time drift with HPET periodic timers Ulrich Obergfell
2011-04-08 15:20 ` [Qemu-devel] [PATCH v2 1/5] hpet 'driftfix': add hooks required to detect coalesced interrupts (x86 apic only) Ulrich Obergfell
2011-04-08 15:46   ` Anthony Liguori
2011-04-08 15:51   ` [Qemu-devel] " Jan Kiszka
2011-04-08 15:20 ` [Qemu-devel] [PATCH v2 2/5] hpet 'driftfix': add driftfix property to HPETState and DeviceInfo Ulrich Obergfell
2011-04-08 15:20 ` [Qemu-devel] [PATCH v2 3/5] hpet 'driftfix': add fields to HPETTimer and VMStateDescription Ulrich Obergfell
2011-04-08 15:47   ` Anthony Liguori
2011-04-11  8:24     ` Ulrich Obergfell
2011-04-11  9:06       ` Ulrich Obergfell
2011-04-11  9:08         ` Avi Kivity
2011-04-11 13:10           ` Anthony Liguori
2011-04-11 13:39             ` Glauber Costa
2011-04-11 13:43               ` Avi Kivity [this message]
2011-04-11 13:47               ` Anthony Liguori
2011-04-11 13:57                 ` Glauber Costa
2011-04-11 13:10       ` Anthony Liguori
2011-04-08 15:20 ` [Qemu-devel] [PATCH v2 4/5] hpet 'driftfix': add code in update_irq() to detect coalesced interrupts (x86 apic only) Ulrich Obergfell
2011-04-08 15:20 ` [Qemu-devel] [PATCH v2 5/5] hpet 'driftfix': add code in hpet_timer() to compensate delayed callbacks and coalesced interrupts Ulrich Obergfell
2011-04-08 15:54   ` [Qemu-devel] " Jan Kiszka
2011-04-08 16:08     ` Glauber Costa
2011-04-08 16:12       ` Jan Kiszka

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=4DA3058A.6070008@redhat.com \
    --to=avi@redhat.com \
    --cc=aliguori@us.ibm.com \
    --cc=gcosta@redhat.com \
    --cc=glommer@redhat.com \
    --cc=jan.kiszka@siemens.com \
    --cc=kvm@vger.kernel.org \
    --cc=qemu-devel@nongnu.org \
    --cc=uobergfe@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 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).