From: Juan Quintela <quintela@redhat.com>
To: "Leonardo Brás" <leobras@redhat.com>
Cc: qemu-devel@nongnu.org, "Peter Xu" <peterx@redhat.com>,
"Greg Kurz" <groug@kaod.org>,
qemu-s390x@nongnu.org, "Fam Zheng" <fam@euphon.net>,
"Ilya Leoshkevich" <iii@linux.ibm.com>,
"Halil Pasic" <pasic@linux.ibm.com>,
"John Snow" <jsnow@redhat.com>,
qemu-ppc@nongnu.org,
"Daniel Henrique Barboza" <danielhb413@gmail.com>,
"Harsh Prateek Bora" <harshpb@linux.ibm.com>,
"Christian Borntraeger" <borntraeger@linux.ibm.com>,
"Richard Henderson" <richard.henderson@linaro.org>,
"David Gibson" <david@gibson.dropbear.id.au>,
"David Hildenbrand" <david@redhat.com>,
"Stefan Hajnoczi" <stefanha@redhat.com>,
"Eric Farman" <farman@linux.ibm.com>,
qemu-block@nongnu.org, "Cédric Le Goater" <clg@kaod.org>,
"Eric Blake" <eblake@redhat.com>,
"Thomas Huth" <thuth@redhat.com>,
"Vladimir Sementsov-Ogievskiy" <vsementsov@yandex-team.ru>
Subject: Re: [PATCH v2 02/16] migration: Correct transferred bytes value
Date: Fri, 26 May 2023 10:04:31 +0200 [thread overview]
Message-ID: <87a5xr4iy8.fsf@secure.mitica> (raw)
In-Reply-To: <1e3a3735a5ba81abb562e8f6c21ab33f38992af5.camel@redhat.com> ("Leonardo Brás"'s message of "Mon, 22 May 2023 23:15:16 -0300")
Leonardo Brás <leobras@redhat.com> wrote:
> On Mon, 2023-05-15 at 21:56 +0200, Juan Quintela wrote:
>> We forget several places to add to trasferred amount of data. With
>> this fixes I get:
>>
>> qemu_file_transferred() + multifd_bytes == transferred
>>
>> The only place whrer this is not true is during devices sending. But
>> going all through the full tree searching for devices that use
>> QEMUFile directly is a bit too much.
>>
>> Multifd, precopy and xbzrle work as expected. Postocpy still misses 35
>> bytes, but searching for them is getting complicated, so I stop here.
>>
>> Signed-off-by: Juan Quintela <quintela@redhat.com>
>> ---
>> migration/ram.c | 14 ++++++++++++++
>> migration/savevm.c | 19 +++++++++++++++++--
>> migration/vmstate.c | 3 +++
>> migration/meson.build | 2 +-
>> 4 files changed, 35 insertions(+), 3 deletions(-)
>>
>> diff --git a/migration/ram.c b/migration/ram.c
>> index f69d8d42b0..fd5a8db0f8 100644
>> --- a/migration/ram.c
>> +++ b/migration/ram.c
>> @@ -337,6 +337,7 @@ int64_t ramblock_recv_bitmap_send(QEMUFile *file,
>>
>> g_free(le_bitmap);
>>
>> + stat64_add(&mig_stats.transferred, 8 + size + 8);
>> if (qemu_file_get_error(file)) {
>> return qemu_file_get_error(file);
>> }
>> @@ -1392,6 +1393,7 @@ static int find_dirty_block(RAMState *rs, PageSearchStatus *pss)
>> return ret;
>> }
>> qemu_put_be64(f, RAM_SAVE_FLAG_MULTIFD_FLUSH);
>> + stat64_add(&mig_stats.transferred, 8);
>> qemu_fflush(f);
>> }
>> /*
>> @@ -3020,6 +3022,7 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
>> RAMState **rsp = opaque;
>> RAMBlock *block;
>> int ret;
>> + size_t size = 0;
>>
>> if (compress_threads_save_setup()) {
>> return -1;
>> @@ -3038,16 +3041,20 @@ static int ram_save_setup(QEMUFile *f, void *opaque)
>> qemu_put_be64(f, ram_bytes_total_with_ignored()
>> | RAM_SAVE_FLAG_MEM_SIZE);
>>
>> + size += 8;
>> RAMBLOCK_FOREACH_MIGRATABLE(block) {
>> qemu_put_byte(f, strlen(block->idstr));
>> qemu_put_buffer(f, (uint8_t *)block->idstr, strlen(block->idstr));
>> qemu_put_be64(f, block->used_length);
>> + size += 1 + strlen(block->idstr) + 8;
>
> I was thinking some of them would look better with sizeof()s instead of given
> literal number, such as:
>
> size += sizeof(Byte) + strlen(block->idstr) + sizeof(block->used_length);
>
> Maybe too much?
I dropped this patch for two reasons:
- reviewers gave me a bad time with it O:-)
- it was there only so if anyone was meassuring that new counters are
the same that old counters.
But as I have already checked that, we don't need it.
I drop it on the next round that I send.
> Maybe, it would be nice to have qemu_put_* to return the value, and in this
> case:
>
> size += qemu_put_be64(...)
>
> What do you think?
Even more important than that is to return an error value, but that
is a very long project.
See on my next series that qemu_fflush() return errors, so code gets
simplifed:
qemu_fflush(file);
if (qemu_file_get_error(file)) {
handle error;
}
to:
qemu_fflush(file);
if (qemu_file_get_error(file)) {
handle error;
}
We need to do basically all qemu_put_*() and qemu_get_*() functions, but
it is a step on the right direction.
Later, Juan.
next prev parent reply other threads:[~2023-05-26 8:05 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-05-15 19:56 [PATCH v2 00/16] Migration: More migration atomic counters Juan Quintela
2023-05-15 19:56 ` [PATCH v2 01/16] migration: Don't use INT64_MAX for unlimited rate Juan Quintela
2023-05-16 4:49 ` Harsh Prateek Bora
2023-05-16 9:13 ` David Edmondson
2023-05-16 9:24 ` Juan Quintela
2023-05-16 9:55 ` David Edmondson
2023-05-16 12:47 ` Cédric Le Goater
2023-05-23 1:57 ` Leonardo Brás
2023-05-15 19:56 ` [PATCH v2 02/16] migration: Correct transferred bytes value Juan Quintela
2023-05-16 9:35 ` David Edmondson
2023-05-23 2:15 ` Leonardo Brás
2023-05-26 8:04 ` Juan Quintela [this message]
2023-05-26 18:50 ` Leonardo Bras Soares Passos
2023-05-30 10:30 ` Juan Quintela
2023-05-15 19:56 ` [PATCH v2 03/16] migration: Move setup_time to mig_stats Juan Quintela
2023-05-16 9:42 ` David Edmondson
2023-05-16 10:06 ` Juan Quintela
2023-05-16 11:07 ` David Edmondson
2023-05-25 1:18 ` Leonardo Brás
2023-05-26 8:07 ` Juan Quintela
2023-05-26 18:53 ` Leonardo Bras Soares Passos
2023-05-15 19:56 ` [PATCH v2 04/16] qemu-file: Account for rate_limit usage on qemu_fflush() Juan Quintela
2023-05-25 1:33 ` Leonardo Brás
2023-05-26 8:09 ` Juan Quintela
2023-05-26 18:54 ` Leonardo Bras Soares Passos
2023-05-15 19:56 ` [PATCH v2 05/16] migration: Move rate_limit_max and rate_limit_used to migration_stats Juan Quintela
2023-05-16 12:43 ` Cédric Le Goater
2023-05-25 3:06 ` Leonardo Brás
2023-05-15 19:56 ` [PATCH v2 06/16] migration: Move migration_total_bytes() to migration-stats.c Juan Quintela
2023-05-25 3:09 ` Leonardo Brás
2023-05-15 19:57 ` [PATCH v2 07/16] migration: Add a trace for migration_transferred_bytes Juan Quintela
2023-05-25 3:18 ` Leonardo Brás
2023-05-15 19:57 ` [PATCH v2 08/16] migration: Use migration_transferred_bytes() to calculate rate_limit Juan Quintela
2023-05-25 6:50 ` Leonardo Brás
2023-05-26 8:17 ` Juan Quintela
2023-05-26 18:59 ` Leonardo Bras Soares Passos
2023-05-15 19:57 ` [PATCH v2 09/16] migration: We don't need the field rate_limit_used anymore Juan Quintela
2023-05-25 6:50 ` Leonardo Brás
2023-05-26 8:18 ` Juan Quintela
2023-05-26 18:59 ` Leonardo Bras Soares Passos
2023-05-15 19:57 ` [PATCH v2 10/16] migration: Don't abuse qemu_file transferred for RDMA Juan Quintela
2023-05-25 6:53 ` Leonardo Brás
2023-05-15 19:57 ` [PATCH v2 11/16] migration/RDMA: It is accounting for zero/normal pages in two places Juan Quintela
2023-05-25 7:06 ` Leonardo Brás
2023-05-15 19:57 ` [PATCH v2 12/16] migration/rdma: Remove QEMUFile parameter when not used Juan Quintela
2023-05-25 7:21 ` Leonardo Brás
2023-05-15 19:57 ` [PATCH v2 13/16] migration/rdma: Don't use imaginary transfers Juan Quintela
2023-05-25 7:27 ` Leonardo Brás
2023-05-15 19:57 ` [PATCH v2 14/16] migration: Remove unused qemu_file_credit_transfer() Juan Quintela
2023-05-25 7:29 ` Leonardo Brás
2023-05-15 19:57 ` [PATCH v2 15/16] migration/rdma: Simplify the function that saves a page Juan Quintela
2023-05-25 8:10 ` Leonardo Brás
2023-05-26 8:21 ` Juan Quintela
2023-05-26 19:03 ` Leonardo Bras Soares Passos
2023-05-15 19:57 ` [PATCH v2 16/16] migration/multifd: Compute transferred bytes correctly Juan Quintela
2023-05-25 8:38 ` Leonardo Brás
2023-05-26 8:23 ` Juan Quintela
2023-05-26 19:04 ` Leonardo Bras Soares Passos
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=87a5xr4iy8.fsf@secure.mitica \
--to=quintela@redhat.com \
--cc=borntraeger@linux.ibm.com \
--cc=clg@kaod.org \
--cc=danielhb413@gmail.com \
--cc=david@gibson.dropbear.id.au \
--cc=david@redhat.com \
--cc=eblake@redhat.com \
--cc=fam@euphon.net \
--cc=farman@linux.ibm.com \
--cc=groug@kaod.org \
--cc=harshpb@linux.ibm.com \
--cc=iii@linux.ibm.com \
--cc=jsnow@redhat.com \
--cc=leobras@redhat.com \
--cc=pasic@linux.ibm.com \
--cc=peterx@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-ppc@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=stefanha@redhat.com \
--cc=thuth@redhat.com \
--cc=vsementsov@yandex-team.ru \
/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.