[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH V2 5/8] ram/colo: only record bitmap of dirty pages in COLO stage
From: |
zhanghailiang |
Subject: |
[PATCH V2 5/8] ram/colo: only record bitmap of dirty pages in COLO stage |
Date: |
Mon, 24 Feb 2020 14:54:11 +0800 |
It is only need to record bitmap of dirty pages while goes
into COLO stage.
Signed-off-by: zhanghailiang <address@hidden>
---
migration/ram.c | 9 +++++----
1 file changed, 5 insertions(+), 4 deletions(-)
diff --git a/migration/ram.c b/migration/ram.c
index ebf9e6ba51..1b3f423351 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -2735,7 +2735,7 @@ static inline void *host_from_ram_block_offset(RAMBlock
*block,
}
static inline void *colo_cache_from_block_offset(RAMBlock *block,
- ram_addr_t offset)
+ ram_addr_t offset, bool record_bitmap)
{
if (!offset_in_ramblock(block, offset)) {
return NULL;
@@ -2751,7 +2751,8 @@ static inline void *colo_cache_from_block_offset(RAMBlock
*block,
* It help us to decide which pages in ram cache should be flushed
* into VM's RAM later.
*/
- if (!test_and_set_bit(offset >> TARGET_PAGE_BITS, block->bmap)) {
+ if (record_bitmap &&
+ !test_and_set_bit(offset >> TARGET_PAGE_BITS, block->bmap)) {
ram_state->migration_dirty_pages++;
}
return block->colo_cache + offset;
@@ -3408,13 +3409,13 @@ static int ram_load_precopy(QEMUFile *f)
if (migration_incoming_colo_enabled()) {
if (migration_incoming_in_colo_state()) {
/* In COLO stage, put all pages into cache temporarily */
- host = colo_cache_from_block_offset(block, addr);
+ host = colo_cache_from_block_offset(block, addr, true);
} else {
/*
* In migration stage but before COLO stage,
* Put all pages into both cache and SVM's memory.
*/
- host_bak = colo_cache_from_block_offset(block, addr);
+ host_bak = colo_cache_from_block_offset(block, addr,
false);
}
}
if (!host) {
--
2.21.0
- [PATCH V2 0/8] Optimize VM's downtime while do checkpoint in COLO, zhanghailiang, 2020/02/24
- [PATCH V2 1/8] migration: fix COLO broken caused by a previous commit, zhanghailiang, 2020/02/24
- [PATCH V2 5/8] ram/colo: only record bitmap of dirty pages in COLO stage,
zhanghailiang <=
- [PATCH V2 3/8] savevm: Don't call colo_init_ram_cache twice, zhanghailiang, 2020/02/24
- [PATCH V2 2/8] migration/colo: wrap incoming checkpoint process into new helper, zhanghailiang, 2020/02/24
- [PATCH V2 6/8] migration: recognize COLO as part of activating process, zhanghailiang, 2020/02/24
- [PATCH V2 8/8] migration/colo: Only flush ram cache while do checkpoint, zhanghailiang, 2020/02/24
- [PATCH V2 7/8] COLO: Migrate dirty pages during the gap of checkpointing, zhanghailiang, 2020/02/24
- [PATCH V2 4/8] COLO: Optimize memory back-up process, zhanghailiang, 2020/02/24