qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Peter Xu <peterx@redhat.com>
To: Juan Quintela <quintela@redhat.com>
Cc: qemu-devel@nongnu.org, Leonardo Bras <leobras@redhat.com>,
	Hailiang Zhang <zhanghailiang@xfusion.com>,
	Fiona Ebner <f.ebner@proxmox.com>,
	Stefan Hajnoczi <stefanha@redhat.com>,
	qemu-block@nongnu.org, Fam Zheng <fam@euphon.net>
Subject: Re: [PATCH v2 04/20] qemu-file: We only call qemu_file_transferred_* on the sending side
Date: Wed, 14 Jun 2023 09:36:18 -0400	[thread overview]
Message-ID: <ZInCUphJMtmWLkKq@x1n> (raw)
In-Reply-To: <87y1kne4g2.fsf@secure.mitica>

On Tue, Jun 13, 2023 at 06:02:05PM +0200, Juan Quintela wrote:
> Peter Xu <peterx@redhat.com> wrote:
> > On Tue, May 30, 2023 at 08:39:25PM +0200, Juan Quintela wrote:
> >> Remove the increase in qemu_file_fill_buffer() and add asserts to
> >> qemu_file_transferred* functions.
> >> 
> >> Signed-off-by: Juan Quintela <quintela@redhat.com>
> >
> > The read side accounting does look a bit weird and never caught my notice..
> >
> > Maybe worth also touching the document of QEMUFile::total_transferred to
> > clarify what it accounts?
> >
> > Reviewed-by: Peter Xu <peterx@redhat.com>
> >
> > Though when I'm looking at the counters (didn't follow every single recent
> > patch on this..), I found that now reading transferred value is actually
> > more expensive - qemu_file_transferred() needs flushing, even if for the
> > fast version, qemu_file_transferred_fast() loops over all possible iovs,
> > which can be as large as MAX_IOV_SIZE==64.
> >
> > To be explicit, I _think_ for each guest page we now need to flush...
> >
> >   ram_save_iterate
> >     migration_rate_exceeded
> >       migration_transferred_bytes
> >         qemu_file_transferred
> >
> > I hope I'm wrong..
> 
> See patch 7:
> 
> diff --git a/migration/migration-stats.c b/migration/migration-stats.c
> index 79eea8d865..1696185694 100644
> --- a/migration/migration-stats.c
> +++ b/migration/migration-stats.c
> @@ -62,7 +62,7 @@ uint64_t migration_transferred_bytes(QEMUFile *f)
>  {
>      uint64_t multifd = stat64_get(&mig_stats.multifd_bytes);
>      uint64_t rdma = stat64_get(&mig_stats.rdma_bytes);
> -    uint64_t qemu_file = qemu_file_transferred(f);
> +    uint64_t qemu_file = stat64_get(&mig_stats.qemu_file_transferred);
>  
>      trace_migration_transferred_bytes(qemu_file, multifd, rdma);
>      return qemu_file + multifd + rdma;

If this is a known regression, should we make a first patchset fix it and
make it higher priority to merge?

It seems this is even not mentioned in the cover letter.. while IMHO this
is the most important bit to have in it..

> 
> 
> > Does it mean that perhaps we simply need "sent and put into send buffer"
> > more than "what really got transferred"?  So I start to wonder what's the
> > origianl purpose of this change, and which one is better..
> 
> That is basically what patch 5 and 6 do O:-)
> 
> Problem is arriving to something that is bisectable (for correctness)
> and is easy to review.
> 
> And yes, my choices can be different from the ones tat you do.
> 
> The other reason for the small patches is that:
> a - sometimes I found a different test where things broke, and have to
>     bisect
> b - small patches are much easier to rebase (that I am doing a lot)

That's okay.  Thanks,

-- 
Peter Xu



  reply	other threads:[~2023-06-14 13:36 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-05-30 18:39 [PATCH v2 00/20] Next round of migration atomic counters Juan Quintela
2023-05-30 18:39 ` [PATCH v2 01/20] qemu-file: Rename qemu_file_transferred_ fast -> noflush Juan Quintela
2023-05-30 18:39 ` [PATCH v2 02/20] migration: Change qemu_file_transferred to noflush Juan Quintela
2023-05-30 18:39 ` [PATCH v2 03/20] migration: Use qemu_file_transferred_noflush() for block migration Juan Quintela
2023-05-30 18:39 ` [PATCH v2 04/20] qemu-file: We only call qemu_file_transferred_* on the sending side Juan Quintela
2023-06-05 18:18   ` Peter Xu
2023-06-13 16:02     ` Juan Quintela
2023-06-14 13:36       ` Peter Xu [this message]
2023-06-21 22:20         ` Juan Quintela
2023-05-30 18:39 ` [PATCH v2 05/20] qemu_file: Use a stat64 for qemu_file_transferred Juan Quintela
2023-06-05 18:22   ` Peter Xu
2023-06-13 16:12     ` Juan Quintela
2023-05-30 18:39 ` [PATCH v2 06/20] qemu_file: total_transferred is not used anymore Juan Quintela
2023-06-14 14:52   ` Peter Xu
2023-06-21 23:05     ` Juan Quintela
2023-06-22 14:45       ` Peter Xu
2023-05-30 18:39 ` [PATCH v2 07/20] migration: Use the number of transferred bytes directly Juan Quintela
2023-05-30 18:39 ` [PATCH v2 08/20] qemu_file: Remove unused qemu_file_transferred() Juan Quintela
2023-05-30 18:39 ` [PATCH v2 09/20] qemu-file: Remove _noflush from qemu_file_transferred_noflush() Juan Quintela
2023-05-30 18:39 ` [PATCH v2 10/20] migration: migration_transferred_bytes() don't need the QEMUFile Juan Quintela
2023-05-30 18:39 ` [PATCH v2 11/20] migration: migration_rate_limit_reset() " Juan Quintela
2023-05-30 18:39 ` [PATCH v2 12/20] qemu-file: Simplify qemu_file_get_error() Juan Quintela
2023-05-30 18:39 ` [PATCH v2 13/20] migration: Use migration_transferred_bytes() Juan Quintela
2023-05-30 18:39 ` [PATCH v2 14/20] migration: Remove transferred atomic counter Juan Quintela
2023-05-30 18:39 ` [PATCH v2 15/20] qemu-file: Make qemu_fflush() return errors Juan Quintela
2023-05-30 18:39 ` [PATCH v2 16/20] migration/rdma: Split qemu_fopen_rdma() into input/output functions Juan Quintela
2023-06-14 15:07   ` Peter Xu
2023-05-30 18:39 ` [PATCH v2 17/20] qemu-file: Remove unused qemu_file_mode_is_not_valid() Juan Quintela
2023-05-30 18:39 ` [PATCH v2 18/20] qemu_file: Make qemu_file_is_writable() static Juan Quintela
2023-06-14 15:54   ` Peter Xu
2023-05-30 18:39 ` [PATCH v2 19/20] qemu-file: Simplify qemu_file_shutdown() Juan Quintela
2023-06-14 15:54   ` Peter Xu
2023-05-30 18:39 ` [PATCH v2 20/20] qemu-file: Make qemu_file_get_error_obj() static Juan Quintela
2023-06-14 15:54   ` Peter Xu
2023-05-31  9:10 ` [PATCH v2 00/20] Next round of migration atomic counters Fiona Ebner
2023-05-31 10:22   ` Juan Quintela

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=ZInCUphJMtmWLkKq@x1n \
    --to=peterx@redhat.com \
    --cc=f.ebner@proxmox.com \
    --cc=fam@euphon.net \
    --cc=leobras@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=stefanha@redhat.com \
    --cc=zhanghailiang@xfusion.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).