qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Juan Quintela <quintela@redhat.com>
To: qemu-devel@nongnu.org
Cc: Leonardo Bras <leobras@redhat.com>,
	"Dr. David Alan Gilbert" <dgilbert@redhat.com>,
	Peter Xu <peterx@redhat.com>
Subject: Re: [PATCH 00/23] Migration: Transmit and detect zero pages in the multifd threads
Date: Wed, 24 Nov 2021 10:59:15 +0100	[thread overview]
Message-ID: <875yshho24.fsf@secure.mitica> (raw)
In-Reply-To: <20211123175113.35569-1-quintela@redhat.com> (Juan Quintela's message of "Tue, 23 Nov 2021 18:50:50 +0100")

Juan Quintela <quintela@redhat.com> wrote:
> Hi

Nack myself.

For some reasons my mail server decided to only sent part of the series.

Sorry, Juan.


>
> Since Friday version:
> - More cleanups on the code
> - Remove repeated calls to qemu_target_page_size()
> - Establish normal pages and zero pages
> - detect zero pages on the multifd threads
> - send zero pages through the multifd channels.
> - reviews by Richard addressed.
>
> It pases migration-test, so it should be perfect O:+)
>
> ToDo for next version:
> - check the version changes
>   I need that 6.2 is out to check for 7.0.
>   This code don't exist at all due to that reason.
> - Send measurements of the differences
>
> Please, review.
>
> [
>
> Friday version that just created a single writev instead of
> write+writev.
>
> ]
>
> Right now, multifd does a write() for the header and a writev() for
> each group of pages.  Simplify it so we send the header as another
> member of the IOV.
>
> Once there, I got several simplifications:
> * is_zero_range() was used only once, just use its body.
> * same with is_zero_page().
> * Be consintent and use offset insed the ramblock everywhere.
> * Now that we have the offsets of the ramblock, we can drop the iov.
> * Now that nothing uses iov's except NOCOMP method, move the iovs
>   from pages to methods.
> * Now we can use iov's with a single field for zlib/zstd.
> * send_write() method is the same in all the implementaitons, so use
>   it directly.
> * Now, we can use a single writev() to write everything.
>
> ToDo: Move zero page detection to the multifd thrteads.
>
> With RAM in the Terabytes size, the detection of the zero page takes
> too much time on the main thread.
>
> Last patch on the series removes the detection of zero pages in the
> main thread for multifd.  In the next series post, I will add how to
> detect the zero pages and send them on multifd channels.
>
> Please review.
>
> Later, Juan.
>
> Juan Quintela (23):
>   multifd: Delete useless operation
>   migration: Never call twice qemu_target_page_size()
>   multifd: Rename used field to num
>   multifd: Add missing documention
>   multifd: The variable is only used inside the loop
>   multifd: remove used parameter from send_prepare() method
>   multifd: remove used parameter from send_recv_pages() method
>   multifd: Fill offset and block for reception
>   multifd: Make zstd compression method not use iovs
>   multifd: Make zlib compression method not use iovs
>   multifd: Move iov from pages to params
>   multifd: Make zlib use iov's
>   multifd: Make zstd use iov's
>   multifd: Remove send_write() method
>   multifd: Use a single writev on the send side
>   multifd: Unfold "used" variable by its value
>   multifd: Use normal pages array on the send side
>   multifd: Use normal pages array on the recv side
>   multifd: recv side only needs the RAMBlock host address
>   multifd: Rename pages_used to normal_pages
>   multifd: Support for zero pages transmission
>   multifd: Zero pages transmission
>   migration: Use multifd before we check for the zero page
>
>  migration/multifd.h      |  52 +++++++---
>  migration/migration.c    |   7 +-
>  migration/multifd-zlib.c |  71 +++++--------
>  migration/multifd-zstd.c |  70 +++++--------
>  migration/multifd.c      | 214 +++++++++++++++++++++++----------------
>  migration/ram.c          |  22 ++--
>  migration/savevm.c       |   5 +-
>  migration/trace-events   |   4 +-
>  8 files changed, 231 insertions(+), 214 deletions(-)



      parent reply	other threads:[~2021-11-24 10:05 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-23 17:50 [PATCH 00/23] Migration: Transmit and detect zero pages in the multifd threads Juan Quintela
2021-11-23 17:50 ` [PATCH 01/23] multifd: Delete useless operation Juan Quintela
2021-11-23 17:50 ` [PATCH 02/23] migration: Never call twice qemu_target_page_size() Juan Quintela
2021-11-23 17:50 ` [PATCH 03/23] multifd: Rename used field to num Juan Quintela
2021-11-23 17:50 ` [PATCH 04/23] multifd: Add missing documention Juan Quintela
2021-11-23 17:50 ` [PATCH 05/23] multifd: The variable is only used inside the loop Juan Quintela
2021-11-23 17:50 ` [PATCH 06/23] multifd: remove used parameter from send_prepare() method Juan Quintela
2021-11-23 17:50 ` [PATCH 07/23] multifd: remove used parameter from send_recv_pages() method Juan Quintela
2021-11-23 17:50 ` [PATCH 08/23] multifd: Fill offset and block for reception Juan Quintela
2021-11-23 17:50 ` [PATCH 09/23] multifd: Make zstd compression method not use iovs Juan Quintela
2021-11-23 17:51 ` [PATCH 10/23] multifd: Make zlib " Juan Quintela
2021-11-23 17:51 ` [PATCH 11/23] multifd: Move iov from pages to params Juan Quintela
2021-11-23 17:51 ` [PATCH 12/23] multifd: Make zlib use iov's Juan Quintela
2021-11-23 17:51 ` [PATCH 13/23] multifd: Make zstd " Juan Quintela
2021-11-23 17:51 ` [PATCH 14/23] multifd: Remove send_write() method Juan Quintela
2021-11-23 17:51 ` [PATCH 15/23] multifd: Use a single writev on the send side Juan Quintela
2021-11-23 17:51 ` [PATCH 16/23] multifd: Unfold "used" variable by its value Juan Quintela
2021-11-23 17:51 ` [PATCH 17/23] multifd: Use normal pages array on the send side Juan Quintela
2021-11-24  9:59 ` Juan Quintela [this message]

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=875yshho24.fsf@secure.mitica \
    --to=quintela@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=leobras@redhat.com \
    --cc=peterx@redhat.com \
    --cc=qemu-devel@nongnu.org \
    /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).