multifd: Create property multifd-flush-after-each-section
We used to flush all channels at the end of each RAM section sent. That is not needed, so preparing to only flush after a full iteration through all the RAM. Default value of the property is false. But we return "true" in migrate_multifd_flush_after_each_section() until we implement the code in following patches. Signed-off-by: Juan Quintela <quintela@redhat.com> Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> Acked-by: Peter Xu <peterx@redhat.com> --- Rename each-iteration to after-each-section Rename multifd-sync-after-each-section to multifd-flush-after-each-section Move to machine-8.0 (peter)
This commit is contained in:
parent
f9436522c8
commit
77c259a4cb
@ -39,7 +39,9 @@
|
||||
#include "hw/virtio/virtio.h"
|
||||
#include "hw/virtio/virtio-pci.h"
|
||||
|
||||
GlobalProperty hw_compat_8_0[] = {};
|
||||
GlobalProperty hw_compat_8_0[] = {
|
||||
{ "migration", "multifd-flush-after-each-section", "on"},
|
||||
};
|
||||
const size_t hw_compat_8_0_len = G_N_ELEMENTS(hw_compat_8_0);
|
||||
|
||||
GlobalProperty hw_compat_7_2[] = {
|
||||
|
@ -404,6 +404,18 @@ struct MigrationState {
|
||||
*/
|
||||
bool preempt_pre_7_2;
|
||||
|
||||
/*
|
||||
* flush every channel after each section sent.
|
||||
*
|
||||
* This assures that we can't mix pages from one iteration through
|
||||
* ram pages with pages for the following iteration. We really
|
||||
* only need to do this flush after we have go through all the
|
||||
* dirty pages. For historical reasons, we do that after each
|
||||
* section. This is suboptimal (we flush too many times).
|
||||
* Default value is false. Setting this property has no effect
|
||||
* until the patch that removes this comment. (since 8.1)
|
||||
*/
|
||||
bool multifd_flush_after_each_section;
|
||||
/*
|
||||
* This decides the size of guest memory chunk that will be used
|
||||
* to track dirty bitmap clearing. The size of memory chunk will
|
||||
|
@ -88,6 +88,8 @@ Property migration_properties[] = {
|
||||
send_section_footer, true),
|
||||
DEFINE_PROP_BOOL("decompress-error-check", MigrationState,
|
||||
decompress_error_check, true),
|
||||
DEFINE_PROP_BOOL("multifd-flush-after-each-section", MigrationState,
|
||||
multifd_flush_after_each_section, true),
|
||||
DEFINE_PROP_UINT8("x-clear-bitmap-shift", MigrationState,
|
||||
clear_bitmap_shift, CLEAR_BITMAP_SHIFT_DEFAULT),
|
||||
DEFINE_PROP_BOOL("x-preempt-pre-7-2", MigrationState,
|
||||
@ -335,6 +337,17 @@ bool migrate_zero_copy_send(void)
|
||||
|
||||
/* pseudo capabilities */
|
||||
|
||||
bool migrate_multifd_flush_after_each_section(void)
|
||||
{
|
||||
MigrationState *s = migrate_get_current();
|
||||
|
||||
/*
|
||||
* Until the patch that remove this comment, we always return that
|
||||
* the property is enabled.
|
||||
*/
|
||||
return true || s->multifd_flush_after_each_section;
|
||||
}
|
||||
|
||||
bool migrate_postcopy(void)
|
||||
{
|
||||
return migrate_postcopy_ram() || migrate_dirty_bitmaps();
|
||||
|
@ -59,6 +59,7 @@ bool migrate_zero_copy_send(void);
|
||||
* check, but they are not a capability.
|
||||
*/
|
||||
|
||||
bool migrate_multifd_flush_after_each_section(void);
|
||||
bool migrate_postcopy(void);
|
||||
bool migrate_tls(void);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user