All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 00/23] Migration: Transmit and detect zero pages in the multifd threads
@ 2022-01-11 13:00 Juan Quintela
  2022-01-11 13:00 ` [PATCH v4 01/23] migration: All this fields are unsigned Juan Quintela
                   ` (22 more replies)
  0 siblings, 23 replies; 44+ messages in thread
From: Juan Quintela @ 2022-01-11 13:00 UTC (permalink / raw)
  To: qemu-devel
  Cc: Eduardo Habkost, Juan Quintela, Dr. David Alan Gilbert, Peter Xu,
	Philippe Mathieu-Daudé,
	Yanan Wang, Leonardo Bras

Hi

In this version
- Rebase to latest
- Address all comments from previous versions
- code cleanup

Please review.

[v2]
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):
  migration: All this fields are unsigned
  migration: We only need last_stage in two places
  migration: ram_release_pages() always receive 1 page as argument
  migration: Remove masking for compression
  migration: simplify do_compress_ram_page
  migration: Move ram_release_pages() call to save_zero_page_to_file()
  multifd: Use proper maximum compression values
  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
  migration: Make ram_save_target_page() a pointer
  multifd: Add property to enable/disable zero_page
  multifd: Support for zero pages transmission
  multifd: Zero pages transmission
  migration: Use multifd before we check for the zero page
  migration: Export ram_release_page()

 migration/migration.h    |   3 +
 migration/multifd.h      |  50 +++++++---
 migration/ram.h          |   2 +
 hw/core/machine.c        |   4 +-
 migration/migration.c    |  11 +++
 migration/multifd-zlib.c |  61 +++++-------
 migration/multifd-zstd.c |  63 +++++--------
 migration/multifd.c      | 198 +++++++++++++++++++++++----------------
 migration/ram.c          | 111 +++++++++++++---------
 migration/trace-events   |  26 ++---
 10 files changed, 301 insertions(+), 228 deletions(-)

-- 
2.34.1




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

end of thread, other threads:[~2022-01-27 16:34 UTC | newest]

Thread overview: 44+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-11 13:00 [PATCH v4 00/23] Migration: Transmit and detect zero pages in the multifd threads Juan Quintela
2022-01-11 13:00 ` [PATCH v4 01/23] migration: All this fields are unsigned Juan Quintela
2022-01-11 13:00 ` [PATCH v4 02/23] migration: We only need last_stage in two places Juan Quintela
2022-01-11 13:00 ` [PATCH v4 03/23] migration: ram_release_pages() always receive 1 page as argument Juan Quintela
2022-01-11 13:00 ` [PATCH v4 04/23] migration: Remove masking for compression Juan Quintela
2022-01-11 19:56   ` Dr. David Alan Gilbert
2022-01-11 13:00 ` [PATCH v4 05/23] migration: simplify do_compress_ram_page Juan Quintela
2022-01-11 20:00   ` Dr. David Alan Gilbert
2022-01-11 13:00 ` [PATCH v4 06/23] migration: Move ram_release_pages() call to save_zero_page_to_file() Juan Quintela
2022-01-11 13:00 ` [PATCH v4 07/23] multifd: Use proper maximum compression values Juan Quintela
2022-01-13 13:27   ` Dr. David Alan Gilbert
2022-01-11 13:00 ` [PATCH v4 08/23] multifd: Move iov from pages to params Juan Quintela
2022-01-18 17:56   ` Dr. David Alan Gilbert
2022-01-25  9:31     ` Juan Quintela
2022-01-27 15:03       ` Dr. David Alan Gilbert
2022-01-11 13:00 ` [PATCH v4 09/23] multifd: Make zlib use iov's Juan Quintela
2022-01-11 13:00 ` [PATCH v4 10/23] multifd: Make zstd " Juan Quintela
2022-01-11 13:00 ` [PATCH v4 11/23] multifd: Remove send_write() method Juan Quintela
2022-01-18 18:22   ` Dr. David Alan Gilbert
2022-01-11 13:00 ` [PATCH v4 12/23] multifd: Use a single writev on the send side Juan Quintela
2022-01-11 13:00 ` [PATCH v4 13/23] multifd: Unfold "used" variable by its value Juan Quintela
2022-01-11 13:00 ` [PATCH v4 14/23] multifd: Use normal pages array on the send side Juan Quintela
2022-01-18 18:41   ` Dr. David Alan Gilbert
2022-01-11 13:00 ` [PATCH v4 15/23] multifd: Use normal pages array on the recv side Juan Quintela
2022-01-18 19:29   ` Dr. David Alan Gilbert
2022-01-11 13:00 ` [PATCH v4 16/23] multifd: recv side only needs the RAMBlock host address Juan Quintela
2022-01-11 13:00 ` [PATCH v4 17/23] multifd: Rename pages_used to normal_pages Juan Quintela
2022-01-11 13:00 ` [PATCH v4 18/23] migration: Make ram_save_target_page() a pointer Juan Quintela
2022-01-18 19:43   ` Dr. David Alan Gilbert
2022-01-11 13:00 ` [PATCH v4 19/23] multifd: Add property to enable/disable zero_page Juan Quintela
2022-01-18 19:38   ` Dr. David Alan Gilbert
2022-01-11 13:00 ` [PATCH v4 20/23] multifd: Support for zero pages transmission Juan Quintela
2022-01-18 19:49   ` Dr. David Alan Gilbert
2022-01-11 13:00 ` [PATCH v4 21/23] multifd: Zero " Juan Quintela
2022-01-18 19:55   ` Dr. David Alan Gilbert
2022-01-25  9:42     ` Juan Quintela
2022-01-27 15:13       ` Dr. David Alan Gilbert
2022-01-27 15:26         ` Juan Quintela
2022-01-11 13:00 ` [PATCH v4 22/23] migration: Use multifd before we check for the zero page Juan Quintela
2022-01-18 20:01   ` Dr. David Alan Gilbert
2022-01-25  9:45     ` Juan Quintela
2022-01-11 13:00 ` [PATCH v4 23/23] migration: Export ram_release_page() Juan Quintela
2022-01-18 20:02   ` Dr. David Alan Gilbert
2022-01-25 10:02     ` Juan Quintela

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.