qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v2 00/23] Migration: Transmit and detect zero pages in the multifd threads
@ 2021-11-24  9:54 Juan Quintela
  2021-11-24  9:54 ` [PATCH v2 01/23] multifd: Delete useless operation Juan Quintela
                   ` (14 more replies)
  0 siblings, 15 replies; 16+ messages in thread
From: Juan Quintela @ 2021-11-24  9:54 UTC (permalink / raw)
  To: qemu-devel; +Cc: Leonardo Bras, Dr. David Alan Gilbert, Peter Xu, Juan Quintela

Hi

This is a rebase against last master.

And the reason for resend is to configure properly git-publish and
hope this time that git-publish send all the patches.

Please, review.

[v1]
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(-)

-- 
2.33.1




^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2021-11-24 10:09 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-24  9:54 [PATCH v2 00/23] Migration: Transmit and detect zero pages in the multifd threads Juan Quintela
2021-11-24  9:54 ` [PATCH v2 01/23] multifd: Delete useless operation Juan Quintela
2021-11-24  9:54 ` [PATCH v2 02/23] migration: Never call twice qemu_target_page_size() Juan Quintela
2021-11-24  9:54 ` [PATCH v2 03/23] multifd: Rename used field to num Juan Quintela
2021-11-24  9:54 ` [PATCH v2 04/23] multifd: Add missing documention Juan Quintela
2021-11-24  9:54 ` [PATCH v2 05/23] multifd: The variable is only used inside the loop Juan Quintela
2021-11-24  9:54 ` [PATCH v2 06/23] multifd: remove used parameter from send_prepare() method Juan Quintela
2021-11-24  9:54 ` [PATCH v2 07/23] multifd: remove used parameter from send_recv_pages() method Juan Quintela
2021-11-24  9:54 ` [PATCH v2 08/23] multifd: Fill offset and block for reception Juan Quintela
2021-11-24  9:54 ` [PATCH v2 09/23] multifd: Make zstd compression method not use iovs Juan Quintela
2021-11-24  9:54 ` [PATCH v2 10/23] multifd: Make zlib " Juan Quintela
2021-11-24  9:54 ` [PATCH v2 11/23] multifd: Move iov from pages to params Juan Quintela
2021-11-24  9:54 ` [PATCH v2 12/23] multifd: Make zlib use iov's Juan Quintela
2021-11-24  9:54 ` [PATCH v2 13/23] multifd: Make zstd " Juan Quintela
2021-11-24  9:54 ` [PATCH v2 14/23] multifd: Remove send_write() method Juan Quintela
2021-11-24  9:59 ` [PATCH v2 00/23] Migration: Transmit and detect zero pages in the multifd threads Juan Quintela

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).