From: Fabiano Rosas <farosas@suse.de>
To: Elena Ufimtseva <elena.ufimtseva@oracle.com>,
quintela@redhat.com, peterx@redhat.com, leobras@redhat.com
Cc: elena.ufimtseva@oracle.com, qemu-devel@nongnu.org
Subject: Re: [PATCH 1/4] multifd: wait for channels_ready before sending sync
Date: Fri, 22 Sep 2023 13:06:53 -0300 [thread overview]
Message-ID: <87bkdumbtu.fsf@suse.de> (raw)
In-Reply-To: <20230922065625.21848-2-elena.ufimtseva@oracle.com>
Elena Ufimtseva <elena.ufimtseva@oracle.com> writes:
> In multifd_send_sync_main we need to wait for channels_ready
> before submitting sync packet as the threads may still be sending
> their previous pages.
> There is also no need to check for channels_ready in the loop
> before the wait for sem_sync, next iteration of sending pages
> or another sync will start with waiting for channels_ready
> semaphore.
> Changes to commit 90b3cec351996dd8ef4eb847ad38607812c5e7f5
> ("multifd: Fix the number of channels ready")
>
> Signed-off-by: Elena Ufimtseva <elena.ufimtseva@oracle.com>
> ---
> migration/multifd.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/migration/multifd.c b/migration/multifd.c
> index 0f6b203877..e61e458151 100644
> --- a/migration/multifd.c
> +++ b/migration/multifd.c
> @@ -595,6 +595,7 @@ int multifd_send_sync_main(QEMUFile *f)
> }
> }
>
> + qemu_sem_wait(&multifd_send_state->channels_ready);
> /*
> * When using zero-copy, it's necessary to flush the pages before any of
> * the pages can be sent again, so we'll make sure the new version of the
> @@ -630,7 +631,6 @@ int multifd_send_sync_main(QEMUFile *f)
> for (i = 0; i < migrate_multifd_channels(); i++) {
> MultiFDSendParams *p = &multifd_send_state->params[i];
>
> - qemu_sem_wait(&multifd_send_state->channels_ready);
> trace_multifd_send_sync_main_wait(p->id);
> qemu_sem_wait(&p->sem_sync);
Please take a look at the series I just sent. Basically, I think we
should wait on 'sem' for the number of existing channels and not just
once per sync. Otherwise I think we'd hit the same issue this patch is
trying to fix when we loop into the n+1 channels. I think the
assert(!p->pending_job) in patch 3 helps prove that's more appropriate.
Let me know what you think.
Thanks
next prev parent reply other threads:[~2023-09-22 16:07 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-22 6:56 [PATCH 0/4] multifd: various fixes Elena Ufimtseva
2023-09-22 6:56 ` [PATCH 1/4] multifd: wait for channels_ready before sending sync Elena Ufimtseva
2023-09-22 16:06 ` Fabiano Rosas [this message]
2023-09-22 23:18 ` Elena Ufimtseva
2023-09-22 6:56 ` [PATCH 2/4] migration: check for rate_limit_max for RATE_LIMIT_DISABLED Elena Ufimtseva
2023-09-22 17:38 ` Fabiano Rosas
2023-10-10 20:17 ` Peter Xu
2023-09-22 6:56 ` [PATCH 3/4] multifd: fix counters in multifd_send_thread Elena Ufimtseva
2023-09-22 18:13 ` Fabiano Rosas
2023-09-22 6:56 ` [PATCH 4/4] multifd: reset next_packet_len after sending pages Elena Ufimtseva
2023-09-22 18:32 ` Fabiano Rosas
2023-09-22 18:44 ` Fabiano Rosas
2023-09-22 14:18 ` [PATCH 0/4] multifd: various fixes Fabiano Rosas
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=87bkdumbtu.fsf@suse.de \
--to=farosas@suse.de \
--cc=elena.ufimtseva@oracle.com \
--cc=leobras@redhat.com \
--cc=peterx@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@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 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.