* [PULL 0/3] Migration 20211109 patches
@ 2021-11-09 8:02 Juan Quintela
2021-11-09 8:02 ` [PULL 1/3] docs: fix 'sample-pages' option tag Juan Quintela
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Juan Quintela @ 2021-11-09 8:02 UTC (permalink / raw)
To: qemu-devel
Cc: Markus Armbruster, Hailiang Zhang, Eric Blake,
Dr. David Alan Gilbert, Juan Quintela
The following changes since commit 114f3c8cc427333dbae331dfd2ecae64676b087e:
Merge remote-tracking branch 'remotes/philmd/tags/avocado-20211108' into staging (2021-11-08 18:50:09 +0100)
are available in the Git repository at:
https://github.com/juanquintela/qemu.git tags/migration-20211109-pull-request
for you to fetch changes up to 91fe9a8dbd449a2f333aefb82ec8adb1f6424408:
Reset the auto-converge counter at every checkpoint. (2021-11-09 08:48:36 +0100)
----------------------------------------------------------------
Migration Pull request
Hi
This pull request includes:
- fix sample-pages doc by hyman
- cleanup colo pages by contiguous blocks by Rao
- reset auto-converge by checkpoint by Rao.
Please, apply.
----------------------------------------------------------------
Hyman Huang(黄勇) (1):
docs: fix 'sample-pages' option tag
Rao, Lei (2):
Reduce the PVM stop time during Checkpoint
Reset the auto-converge counter at every checkpoint.
qapi/migration.json | 2 +-
migration/ram.h | 1 +
migration/colo.c | 4 ++++
migration/ram.c | 57 ++++++++++++++++++++++++++++++++++++++++++---
4 files changed, 60 insertions(+), 4 deletions(-)
--
2.33.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PULL 1/3] docs: fix 'sample-pages' option tag
2021-11-09 8:02 [PULL 0/3] Migration 20211109 patches Juan Quintela
@ 2021-11-09 8:02 ` Juan Quintela
2021-11-09 8:02 ` [PULL 2/3] Reduce the PVM stop time during Checkpoint Juan Quintela
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Juan Quintela @ 2021-11-09 8:02 UTC (permalink / raw)
To: qemu-devel
Cc: Hailiang Zhang, Juan Quintela, Hyman Huang(黄勇),
Markus Armbruster, Dr. David Alan Gilbert, Eric Blake
From: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
commit f78d4ed701 has fixed qemu tag, making 'sample-pages' option tag
involved by accident, which introduced since 6.1 in commit 7afa08cd8fd.
revert this line.
Signed-off-by: Hyman Huang(黄勇) <huangy81@chinatelecom.cn>
Reviewed-by: Markus Armbruster <armbru@redhat.com>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
qapi/migration.json | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/qapi/migration.json b/qapi/migration.json
index f0aefdab64..bbfd48cf0b 100644
--- a/qapi/migration.json
+++ b/qapi/migration.json
@@ -1796,7 +1796,7 @@
# @calc-time: time in units of second for sample dirty pages
#
# @sample-pages: page count per GB for sample dirty pages
-# the default value is 512 (since 6.2)
+# the default value is 512 (since 6.1)
#
# @mode: mode containing method of calculate dirtyrate includes
# 'page-sampling' and 'dirty-ring' (Since 6.2)
--
2.33.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PULL 2/3] Reduce the PVM stop time during Checkpoint
2021-11-09 8:02 [PULL 0/3] Migration 20211109 patches Juan Quintela
2021-11-09 8:02 ` [PULL 1/3] docs: fix 'sample-pages' option tag Juan Quintela
@ 2021-11-09 8:02 ` Juan Quintela
2021-11-09 8:02 ` [PULL 3/3] Reset the auto-converge counter at every checkpoint Juan Quintela
2021-11-09 10:31 ` [PULL 0/3] Migration 20211109 patches Richard Henderson
3 siblings, 0 replies; 5+ messages in thread
From: Juan Quintela @ 2021-11-09 8:02 UTC (permalink / raw)
To: qemu-devel
Cc: Lukas Straub, Hailiang Zhang, Juan Quintela, Rao, Lei,
Markus Armbruster, Dr. David Alan Gilbert, Eric Blake
From: "Rao, Lei" <lei.rao@intel.com>
When flushing memory from ram cache to ram during every checkpoint
on secondary VM, we can copy continuous chunks of memory instead of
4096 bytes per time to reduce the time of VM stop during checkpoint.
Signed-off-by: Lei Rao <lei.rao@intel.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Lukas Straub <lukasstraub2@web.de>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Tested-by: Lukas Straub <lukasstraub2@web.de>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
migration/ram.c | 48 +++++++++++++++++++++++++++++++++++++++++++++---
1 file changed, 45 insertions(+), 3 deletions(-)
diff --git a/migration/ram.c b/migration/ram.c
index 847af461f2..f48cf4b0a5 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -836,6 +836,41 @@ migration_clear_memory_region_dirty_bitmap_range(RAMBlock *rb,
}
}
+/*
+ * colo_bitmap_find_diry:find contiguous dirty pages from start
+ *
+ * Returns the page offset within memory region of the start of the contiguout
+ * dirty page
+ *
+ * @rs: current RAM state
+ * @rb: RAMBlock where to search for dirty pages
+ * @start: page where we start the search
+ * @num: the number of contiguous dirty pages
+ */
+static inline
+unsigned long colo_bitmap_find_dirty(RAMState *rs, RAMBlock *rb,
+ unsigned long start, unsigned long *num)
+{
+ unsigned long size = rb->used_length >> TARGET_PAGE_BITS;
+ unsigned long *bitmap = rb->bmap;
+ unsigned long first, next;
+
+ *num = 0;
+
+ if (ramblock_is_ignored(rb)) {
+ return size;
+ }
+
+ first = find_next_bit(bitmap, size, start);
+ if (first >= size) {
+ return first;
+ }
+ next = find_next_zero_bit(bitmap, size, first + 1);
+ assert(next >= first);
+ *num = next - first;
+ return first;
+}
+
static inline bool migration_bitmap_clear_dirty(RAMState *rs,
RAMBlock *rb,
unsigned long page)
@@ -3886,19 +3921,26 @@ void colo_flush_ram_cache(void)
block = QLIST_FIRST_RCU(&ram_list.blocks);
while (block) {
- offset = migration_bitmap_find_dirty(ram_state, block, offset);
+ unsigned long num = 0;
+ offset = colo_bitmap_find_dirty(ram_state, block, offset, &num);
if (!offset_in_ramblock(block,
((ram_addr_t)offset) << TARGET_PAGE_BITS)) {
offset = 0;
+ num = 0;
block = QLIST_NEXT_RCU(block, next);
} else {
- migration_bitmap_clear_dirty(ram_state, block, offset);
+ unsigned long i = 0;
+
+ for (i = 0; i < num; i++) {
+ migration_bitmap_clear_dirty(ram_state, block, offset + i);
+ }
dst_host = block->host
+ (((ram_addr_t)offset) << TARGET_PAGE_BITS);
src_host = block->colo_cache
+ (((ram_addr_t)offset) << TARGET_PAGE_BITS);
- memcpy(dst_host, src_host, TARGET_PAGE_SIZE);
+ memcpy(dst_host, src_host, TARGET_PAGE_SIZE * num);
+ offset += num;
}
}
}
--
2.33.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PULL 3/3] Reset the auto-converge counter at every checkpoint.
2021-11-09 8:02 [PULL 0/3] Migration 20211109 patches Juan Quintela
2021-11-09 8:02 ` [PULL 1/3] docs: fix 'sample-pages' option tag Juan Quintela
2021-11-09 8:02 ` [PULL 2/3] Reduce the PVM stop time during Checkpoint Juan Quintela
@ 2021-11-09 8:02 ` Juan Quintela
2021-11-09 10:31 ` [PULL 0/3] Migration 20211109 patches Richard Henderson
3 siblings, 0 replies; 5+ messages in thread
From: Juan Quintela @ 2021-11-09 8:02 UTC (permalink / raw)
To: qemu-devel
Cc: Lukas Straub, Hailiang Zhang, Juan Quintela, Rao, Lei,
Markus Armbruster, Dr. David Alan Gilbert, Eric Blake
From: "Rao, Lei" <lei.rao@intel.com>
if we don't reset the auto-converge counter,
it will continue to run with COLO running,
and eventually the system will hang due to the
CPU throttle reaching DEFAULT_MIGRATE_MAX_CPU_THROTTLE.
Signed-off-by: Lei Rao <lei.rao@intel.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Lukas Straub <lukasstraub2@web.de>
Tested-by: Lukas Straub <lukasstraub2@web.de>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
migration/ram.h | 1 +
migration/colo.c | 4 ++++
migration/ram.c | 9 +++++++++
3 files changed, 14 insertions(+)
diff --git a/migration/ram.h b/migration/ram.h
index dda1988f3d..c515396a9a 100644
--- a/migration/ram.h
+++ b/migration/ram.h
@@ -50,6 +50,7 @@ bool ramblock_is_ignored(RAMBlock *block);
int xbzrle_cache_resize(uint64_t new_size, Error **errp);
uint64_t ram_bytes_remaining(void);
uint64_t ram_bytes_total(void);
+void mig_throttle_counter_reset(void);
uint64_t ram_pagesize_summary(void);
int ram_save_queue_pages(const char *rbname, ram_addr_t start, ram_addr_t len);
diff --git a/migration/colo.c b/migration/colo.c
index e3b1f136f4..2415325262 100644
--- a/migration/colo.c
+++ b/migration/colo.c
@@ -459,6 +459,10 @@ static int colo_do_checkpoint_transaction(MigrationState *s,
if (ret < 0) {
goto out;
}
+
+ if (migrate_auto_converge()) {
+ mig_throttle_counter_reset();
+ }
/*
* Only save VM's live state, which not including device state.
* TODO: We may need a timeout mechanism to prevent COLO process
diff --git a/migration/ram.c b/migration/ram.c
index f48cf4b0a5..863035d235 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -641,6 +641,15 @@ static void mig_throttle_guest_down(uint64_t bytes_dirty_period,
}
}
+void mig_throttle_counter_reset(void)
+{
+ RAMState *rs = ram_state;
+
+ rs->time_last_bitmap_sync = qemu_clock_get_ms(QEMU_CLOCK_REALTIME);
+ rs->num_dirty_pages_period = 0;
+ rs->bytes_xfer_prev = ram_counters.transferred;
+}
+
/**
* xbzrle_cache_zero_page: insert a zero page in the XBZRLE cache
*
--
2.33.1
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PULL 0/3] Migration 20211109 patches
2021-11-09 8:02 [PULL 0/3] Migration 20211109 patches Juan Quintela
` (2 preceding siblings ...)
2021-11-09 8:02 ` [PULL 3/3] Reset the auto-converge counter at every checkpoint Juan Quintela
@ 2021-11-09 10:31 ` Richard Henderson
3 siblings, 0 replies; 5+ messages in thread
From: Richard Henderson @ 2021-11-09 10:31 UTC (permalink / raw)
To: Juan Quintela, qemu-devel
Cc: Eric Blake, Markus Armbruster, Dr. David Alan Gilbert,
Hailiang Zhang
On 11/9/21 9:02 AM, Juan Quintela wrote:
> The following changes since commit 114f3c8cc427333dbae331dfd2ecae64676b087e:
>
> Merge remote-tracking branch 'remotes/philmd/tags/avocado-20211108' into staging (2021-11-08 18:50:09 +0100)
>
> are available in the Git repository at:
>
> https://github.com/juanquintela/qemu.git tags/migration-20211109-pull-request
>
> for you to fetch changes up to 91fe9a8dbd449a2f333aefb82ec8adb1f6424408:
>
> Reset the auto-converge counter at every checkpoint. (2021-11-09 08:48:36 +0100)
>
> ----------------------------------------------------------------
> Migration Pull request
>
> Hi
>
> This pull request includes:
> - fix sample-pages doc by hyman
> - cleanup colo pages by contiguous blocks by Rao
> - reset auto-converge by checkpoint by Rao.
>
> Please, apply.
>
> ----------------------------------------------------------------
>
> Hyman Huang(黄勇) (1):
> docs: fix 'sample-pages' option tag
>
> Rao, Lei (2):
> Reduce the PVM stop time during Checkpoint
> Reset the auto-converge counter at every checkpoint.
>
> qapi/migration.json | 2 +-
> migration/ram.h | 1 +
> migration/colo.c | 4 ++++
> migration/ram.c | 57 ++++++++++++++++++++++++++++++++++++++++++---
> 4 files changed, 60 insertions(+), 4 deletions(-)
Applied, thanks.
r~
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2021-11-09 10:34 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-09 8:02 [PULL 0/3] Migration 20211109 patches Juan Quintela
2021-11-09 8:02 ` [PULL 1/3] docs: fix 'sample-pages' option tag Juan Quintela
2021-11-09 8:02 ` [PULL 2/3] Reduce the PVM stop time during Checkpoint Juan Quintela
2021-11-09 8:02 ` [PULL 3/3] Reset the auto-converge counter at every checkpoint Juan Quintela
2021-11-09 10:31 ` [PULL 0/3] Migration 20211109 patches Richard Henderson
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).