qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: "Daniel P. Berrangé" <berrange@redhat.com>
To: Claudio Fontana <cfontana@suse.de>
Cc: "Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	qemu-devel@nongnu.org, "Laurent Vivier" <lvivier@redhat.com>,
	"Thomas Huth" <thuth@redhat.com>,
	"Eduardo Habkost" <ehabkost@redhat.com>,
	"David Hildenbrand" <david@redhat.com>,
	"Michael Roth" <michael.roth@amd.com>,
	"Richard Henderson" <richard.henderson@linaro.org>,
	"Yuval Shaia" <yuval.shaia.ml@gmail.com>,
	"Peter Xu" <peterx@redhat.com>,
	"Gerd Hoffmann" <kraxel@redhat.com>,
	"Paolo Bonzini" <pbonzini@redhat.com>,
	"Philippe Mathieu-Daudé" <philmd@redhat.com>,
	"Eric Blake" <eblake@redhat.com>,
	"Markus Armbruster" <armbru@redhat.com>
Subject: Re: [PULL 15/18] qapi: introduce x-query-ramblock QMP command
Date: Thu, 30 Jun 2022 11:20:07 +0100	[thread overview]
Message-ID: <Yr1415pu4s9moMoB@redhat.com> (raw)
In-Reply-To: <2341fe7b-9831-24eb-c78c-39497901eea9@suse.de>

On Thu, Jun 30, 2022 at 12:14:36PM +0200, Claudio Fontana wrote:
> On 6/9/22 14:52, Dr. David Alan Gilbert wrote:
> > * Daniel P. Berrangé (berrange@redhat.com) wrote:
> >> On Thu, Jun 09, 2022 at 12:07:31PM +0200, Claudio Fontana wrote:
> >>> Hello all,
> >>>
> >>> it would be really good to be able to rely on this command or something similar,
> >>> to be able to know the approximate size of a migration before starting it.
> >>>
> >>> in QEMU ram_bytes_total() returns what I would like to have,
> >>> but there is currently no QMP way to get it without starting a migration,
> >>> which when trying to optimize it/size it is just about too late.
> >>
> >> Aside from the main VM RAM, what other RAM blocks are likely to have
> >> a size large enough to be of consequence to the live migration
> >> data copy, and whose size is not already known to the mgmt app from
> >> the guest config choices it made ? VGA RAM could be a few 100MB I
> >> guess, but the mgmt app knows about that. I've always assumed everything
> >> else is just noise in comparison to the main RAM region.
> >>
> >> Still I wonder how useful this is as its just a static figure, and the
> >> problems with migration transfer are the bulking up of data when the
> >> VM is repeatedly dirtying stuff at a high rate.
> >>
> >>> Do you think x-query-ramblock could be promoted to non-experimental?
> >>
> >> It would have to be re-written, as this current impl is just emitting
> >> a huge printf formatted string. To be considered supportable, the data
> >> would have to be formally modelled in QAPI instead.
> >>
> >> IOW, it would be a case of introducing a new command that emits formal
> >> data, convertintg 'info ramblock' to use that, and then deprecating this 
> >> x-query-ramblock.
> >>
> >>> Should another one be made available instead, like :
> >>> query-ram-bytes-total ?
> >>
> >> That would be simpler if you're just wanting it to give a single
> >> figure.
> > 
> > Is this what qmp_query_memory_size_summary does?
> 
> No, I am not looking at something returning the machine->ram_size,
> but rather how many bytes are actually used in each RAMBlock, in order to estimate the transfer size of a guest to disk.
> 
> This would be the return value of something like migration/ram.c::ram_bytes_total().
> 
> The main guest RAM total size is in most cases an overestimation of the actual bytes required to be transferred.
> 
> If there was such a feature that just returns ram_bytes_total via QMP,
> by knowing the size in bytes before the transfer, we can prealloc the space on disk, which would improve the performance of this series:
> 
> https://patchew.org/Libvirt/20220607091936.7948-1-cfontana@suse.de/
> 
> The interleaved format I posted there works just fine to migrate a suspended VM to disk (virsh save) from multifd channels to a single file,
> but still incurs in a 4-5% performance penalty compared with the multiple files approach,
> that is apparently due to multiple threads competing on acquiring locks to adjust the file size (on XFS).
> 
> Doing a fallocate() would likely remove this performance decrease compared with multifd to multiple files,
> but requires knowing beforehand the approximate size of the transfer, and as mentioned mnachine->ram_size is just overkill in practice and risks erroring out if not enough space is available.
> 
> Feedback on the interleaved format I posted there is welcome as well,

I still believe that libvirt is the wrong place to be implementing any
of this logic. It all belongs in QEMU, because QEMU is the place which
holds all the information needed to do an optimal job, and libvirt does
not, as this request for extra QMP features shows.

With 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:[~2022-06-30 10:22 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-02 17:56 [PULL 00/18] HMP-to-QMP info command patches Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 01/18] monitor: remove 'info ioapic' HMP command Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 02/18] monitor: make hmp_handle_error return a boolean Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 03/18] docs/devel: rename file for writing monitor commands Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 04/18] docs/devel: tweak headings in monitor command docs Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 05/18] docs/devel: update error handling guidance for HMP commands Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 06/18] monitor: introduce HumanReadableText and HMP support Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 07/18] docs/devel: document expectations for QAPI data modelling for QMP Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 08/18] docs/devel: add example of command returning unstructured text Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 09/18] docs/devel: document expectations for HMP commands in the future Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 10/18] qapi: introduce x-query-roms QMP command Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 11/18] qapi: introduce x-query-profile " Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 12/18] qapi: introduce x-query-numa " Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 13/18] qapi: introduce x-query-usb " Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 14/18] qapi: introduce x-query-rdma " Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 15/18] qapi: introduce x-query-ramblock " Daniel P. Berrangé
2022-06-09 10:07   ` Claudio Fontana
2022-06-09 10:19     ` Daniel P. Berrangé
2022-06-09 10:25       ` David Hildenbrand
2022-06-09 12:52       ` Dr. David Alan Gilbert
2022-06-30 10:14         ` Claudio Fontana
2022-06-30 10:20           ` Daniel P. Berrangé [this message]
2022-06-30 12:55             ` Claudio Fontana
2021-11-02 17:56 ` [PULL 16/18] qapi: introduce x-query-irq " Daniel P. Berrangé
2021-11-02 17:56 ` [PULL 17/18] qapi: introduce x-query-jit " Daniel P. Berrangé
2021-11-02 17:57 ` [PULL 18/18] qapi: introduce x-query-opcount " Daniel P. Berrangé
2021-11-03 13:30 ` [PULL 00/18] HMP-to-QMP info command patches Richard Henderson

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=Yr1415pu4s9moMoB@redhat.com \
    --to=berrange@redhat.com \
    --cc=armbru@redhat.com \
    --cc=cfontana@suse.de \
    --cc=david@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=ehabkost@redhat.com \
    --cc=kraxel@redhat.com \
    --cc=lvivier@redhat.com \
    --cc=michael.roth@amd.com \
    --cc=pbonzini@redhat.com \
    --cc=peterx@redhat.com \
    --cc=philmd@redhat.com \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=thuth@redhat.com \
    --cc=yuval.shaia.ml@gmail.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).