All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Kevin Wolf <kwolf@redhat.com>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Max Reitz <mreitz@redhat.com>,
	Richard Palethorpe <richiejp@f-m.fm>,
	Qemu-block <qemu-block@nongnu.org>,
	quintela@redhat.com, armbru@redhat.com, qemu-devel@nongnu.org,
	rpalethorpe@suse.com
Subject: Re: [Qemu-devel] [Qemu-block]  [PATCH 1/2] Add save-snapshot, load-snapshot and delete-snapshot to QAPI
Date: Tue, 13 Feb 2018 13:25:11 +0000	[thread overview]
Message-ID: <20180213132511.GL573@redhat.com> (raw)
In-Reply-To: <20180213132000.GG5083@localhost.localdomain>

On Tue, Feb 13, 2018 at 02:20:00PM +0100, Kevin Wolf wrote:
> Am 13.02.2018 um 12:51 hat Daniel P. Berrangé geschrieben:
> > On Tue, Feb 13, 2018 at 11:43:55AM +0000, Dr. David Alan Gilbert wrote:
> > > * Kevin Wolf (kwolf@redhat.com) wrote:
> > > > Am 11.01.2018 um 14:04 hat Daniel P. Berrange geschrieben:
> > > > > On Thu, Jan 11, 2018 at 01:46:38PM +0100, Max Reitz wrote:
> > > > > > On 2018-01-08 14:52, Eric Blake wrote:
> > > > > > > On 01/07/2018 06:23 AM, Richard Palethorpe wrote:
> > > > > > >> Add QAPI wrapper functions for the existing snapshot functionality. These
> > > > > > >> functions behave the same way as the HMP savevm, loadvm and delvm
> > > > > > >> commands. This will allow applications, such as OpenQA, to programmatically
> > > > > > >> revert the VM to a previous state with no dependence on HMP or qemu-img.
> > > > > > > 
> > > > > > > That's already possible; libvirt uses QMP's human-monitor-command to
> > > > > > > access these HMP commands programmatically.
> > > > > > > 
> > > > > > > We've had discussions in the past about what it would take to have
> > > > > > > specific QMP commands for these operations; the biggest problem is that
> > > > > > > these commands promote the use of internal snapshots, and there are
> > > > > > > enough performance and other issues with internal snapshots that we are
> > > > > > > not yet ready to commit to a long-term interface for making their use
> > > > > > > easier.  At this point, our recommendation is to prefer external snapshots.
> > > > > > 
> > > > > > We already have QMP commands for internal snapshots, though.  Isn't the
> > > > > > biggest issue that savevm takes too much time to be a synchronous QMP
> > > > > > command?
> > > > > 
> > > > > Ultimately savevm/loadvm are using much of the migration code internally,
> > > > > but are not exposed as URI schemes. Could we perhaps take advantage of
> > > > > the internal common layer and define a migration URI scheme
> > > > > 
> > > > >    snapshot:<name>
> > > > > 
> > > > > where '<name>' is the name of the internal snapshot in the qcow2 file.
> > > > 
> > > > Let's include a node-name there, please. QEMU automagically deciding
> > > > where to store the VM state is one of the major problems of the HMP
> > > > interface.
> > > > 
> > > > And while we're at it, we can make it more future-proof by allowing to
> > > > specify arbitrary options:
> > > > 
> > > >     snapshot:node=<node-name>,name=<snapshot-name>
> > > > 
> > > > That would allow us to add something like compressed=on|off later.
> > > > Actually, compressed VM state sounds pretty nice. Why don't we have this
> > > > yet? The qcow2 format already provides everything you need for it.
> > > > 
> > > > > Then you could just use the regular migrate QMP commands for loading
> > > > > and saving snapshots.
> > > > 
> > > > Yes, you could. I think for a proper implementation you would want to do
> > > > better, though. Live migration provides just a stream, but that's not
> > > > really well suited for snapshots. When a RAM page is dirtied, you just
> > > > want to overwrite the old version of it in a snapshot, you don't want to
> > > > waste space by keeping both the old and the current version of the page
> > > > content in the file.
> > > 
> > > The current snapshots are run with the CPU paused aren't they?  They
> > > share exactly the same RAM saving code as migration.
> > 
> > The commands block the monitor too, so I always assumed they were non-live
> 
> Yes, they are non-live, so RAM simply doesn't change and we that's the
> reason why we currently don't get duplicate pages in the snapshot.
> 
> But as I understand it, the whole point of migrate snapshot:... would be
> to make it live, so the potential duplication is something that we need
> to consider for it.

Yeah, true. Re-writing ram pages in-place could be doable if I added a
feature flag QIO_CHANNEL_FEATURE_SEEKABLE, so the migration code  can
tell if it will just append forever, or can seek back to rewrite.

Regards,
Daniel
-- 
|: https://berrange.com      -o-    https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org         -o-            https://fstop138.berrange.com :|
|: https://entangle-photo.org    -o-    https://www.instagram.com/dberrange :|

  reply	other threads:[~2018-02-13 13:25 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-01-07 12:23 [Qemu-devel] [PATCH 1/2] Add save-snapshot, load-snapshot and delete-snapshot to QAPI Richard Palethorpe
2018-01-07 12:23 ` [Qemu-devel] [PATCH 2/2] Add test cases for saving, loading and deleting snapshots using QAPI Richard Palethorpe
2018-01-08 13:52 ` [Qemu-devel] [PATCH 1/2] Add save-snapshot, load-snapshot and delete-snapshot to QAPI Eric Blake
2018-01-10 16:19   ` Richard Palethorpe
2018-01-10 16:48     ` Eric Blake
2018-02-03 13:28       ` Markus Armbruster
2018-01-11 12:46   ` Max Reitz
2018-01-11 13:04     ` Daniel P. Berrange
2018-01-11 13:23       ` Dr. David Alan Gilbert
2018-01-11 13:36         ` Daniel P. Berrange
2018-01-11 16:55           ` Juan Quintela
2018-02-12 13:25             ` Richard Palethorpe
2018-02-13 10:50       ` [Qemu-devel] [Qemu-block] " Kevin Wolf
2018-02-13 11:43         ` Dr. David Alan Gilbert
2018-02-13 11:51           ` Daniel P. Berrangé
2018-02-13 13:20             ` Kevin Wolf
2018-02-13 13:25               ` Daniel P. Berrangé [this message]
     [not found]         ` <20180213143001.GA2354@rkaganb.sw.ru>
2018-02-13 14:36           ` Daniel P. Berrangé
2018-02-13 14:45             ` Kevin Wolf
2018-02-13 14:48               ` Daniel P. Berrangé
2018-02-13 14:51                 ` Denis V. Lunev
2018-02-13 14:59                 ` Dr. David Alan Gilbert
2018-02-13 15:01                   ` Denis V. Lunev
2018-02-13 15:05                     ` Dr. David Alan Gilbert
     [not found]                       ` <20180213151352.GF2307@rkaganb.sw.ru>
2018-02-13 15:27                         ` Dr. David Alan Gilbert
2018-02-13 15:29                           ` Denis V. Lunev
2018-02-13 16:01                       ` Denis Plotnikov
2018-02-15 15:21                         ` Dr. David Alan Gilbert
2018-02-13 16:46                 ` Eric Blake
2018-02-13 19:45                   ` Denis V. Lunev
2018-02-13 14:43           ` Kevin Wolf
2018-02-13 14:50             ` Denis V. Lunev
2018-02-13 14:58             ` Daniel P. Berrangé
2018-02-13 15:23               ` Kevin Wolf
2018-02-13 15:30                 ` Daniel P. Berrangé
2018-02-13 15:51                   ` Kevin Wolf
2018-02-13 16:14             ` Denis Plotnikov
2018-01-10  6:17 ` [Qemu-devel] " Peter Xu

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=20180213132511.GL573@redhat.com \
    --to=berrange@redhat.com \
    --cc=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=richiejp@f-m.fm \
    --cc=rpalethorpe@suse.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.