[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 00/23] Migration: Transmit and detect zero pages in the multif
From: |
Juan Quintela |
Subject: |
[PATCH v4 00/23] Migration: Transmit and detect zero pages in the multifd threads |
Date: |
Tue, 11 Jan 2022 14:00:01 +0100 |
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
- [PATCH v4 00/23] Migration: Transmit and detect zero pages in the multifd threads,
Juan Quintela <=
- [PATCH v4 01/23] migration: All this fields are unsigned, Juan Quintela, 2022/01/11
- [PATCH v4 03/23] migration: ram_release_pages() always receive 1 page as argument, Juan Quintela, 2022/01/11
- [PATCH v4 04/23] migration: Remove masking for compression, Juan Quintela, 2022/01/11
- [PATCH v4 02/23] migration: We only need last_stage in two places, Juan Quintela, 2022/01/11
- [PATCH v4 09/23] multifd: Make zlib use iov's, Juan Quintela, 2022/01/11
- [PATCH v4 05/23] migration: simplify do_compress_ram_page, Juan Quintela, 2022/01/11
- [PATCH v4 10/23] multifd: Make zstd use iov's, Juan Quintela, 2022/01/11
- [PATCH v4 07/23] multifd: Use proper maximum compression values, Juan Quintela, 2022/01/11