[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 09/22] migration: Calculate ram size once
From: |
Juan Quintela |
Subject: |
[PULL 09/22] migration: Calculate ram size once |
Date: |
Mon, 13 Feb 2023 03:51:37 +0100 |
We are recalculating ram size continously, when we know that it don't
change during migration. Create a field in RAMState to track it.
Signed-off-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
migration/ram.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/migration/ram.c b/migration/ram.c
index 1727fe5ef6..6abfe075f2 100644
--- a/migration/ram.c
+++ b/migration/ram.c
@@ -330,6 +330,8 @@ struct RAMState {
PageSearchStatus pss[RAM_CHANNEL_MAX];
/* UFFD file descriptor, used in 'write-tracking' migration */
int uffdio_fd;
+ /* total ram size in bytes */
+ uint64_t ram_bytes_total;
/* Last block that we have visited searching for dirty pages */
RAMBlock *last_seen_block;
/* Last dirty target page we have sent */
@@ -2546,7 +2548,7 @@ static int ram_find_and_save_block(RAMState *rs)
int pages = 0;
/* No dirty page as there is zero RAM */
- if (!ram_bytes_total()) {
+ if (!rs->ram_bytes_total) {
return pages;
}
@@ -3009,13 +3011,14 @@ static int ram_state_init(RAMState **rsp)
qemu_mutex_init(&(*rsp)->bitmap_mutex);
qemu_mutex_init(&(*rsp)->src_page_req_mutex);
QSIMPLEQ_INIT(&(*rsp)->src_page_requests);
+ (*rsp)->ram_bytes_total = ram_bytes_total();
/*
* Count the total number of pages used by ram blocks not including any
* gaps due to alignment or unplugs.
* This must match with the initial values of dirty bitmap.
*/
- (*rsp)->migration_dirty_pages = ram_bytes_total() >> TARGET_PAGE_BITS;
+ (*rsp)->migration_dirty_pages = (*rsp)->ram_bytes_total >>
TARGET_PAGE_BITS;
ram_state_reset(*rsp);
return 0;
--
2.39.1
- Re: [PULL 00/22] Migration 20230213 patches, (continued)
- Re: [PULL 00/22] Migration 20230213 patches, Juan Quintela, 2023/02/12
- [PULL 00/22] Migration 20230213 patches, Juan Quintela, 2023/02/12
- [PULL 02/22] multifd: cleanup the function multifd_channel_connect, Juan Quintela, 2023/02/12
- [PULL 01/22] migration: Remove spurious files, Juan Quintela, 2023/02/12
- [PULL 03/22] multifd: Remove some redundant code, Juan Quintela, 2023/02/12
- [PULL 04/22] linux-headers: Update to v6.1, Juan Quintela, 2023/02/12
- [PULL 05/22] util/userfaultfd: Support /dev/userfaultfd, Juan Quintela, 2023/02/12
- [PULL 06/22] migration: Simplify ram_find_and_save_block(), Juan Quintela, 2023/02/12
- [PULL 07/22] migration: Make find_dirty_block() return a single parameter, Juan Quintela, 2023/02/12
- [PULL 08/22] migration: Split ram_bytes_total_common() in two functions, Juan Quintela, 2023/02/12
- [PULL 09/22] migration: Calculate ram size once,
Juan Quintela <=
- [PULL 10/22] migration: Make ram_save_target_page() a pointer, Juan Quintela, 2023/02/12
- [PULL 14/22] migration: Rework multi-channel checks on URI, Juan Quintela, 2023/02/12
- [PULL 12/22] AVX512 support for xbzrle_encode_buffer, Juan Quintela, 2023/02/12
- [PULL 13/22] Update bench-code for addressing CI problem, Juan Quintela, 2023/02/12
- [PULL 15/22] migration: Cleanup postcopy_preempt_setup(), Juan Quintela, 2023/02/12
- [PULL 16/22] migration: Add a semaphore to count PONGs, Juan Quintela, 2023/02/12
- [PULL 17/22] migration: Postpone postcopy preempt channel to be after main, Juan Quintela, 2023/02/12
- [PULL 18/22] migration/multifd: Change multifd_load_cleanup() signature and usage, Juan Quintela, 2023/02/12
- [PULL 19/22] migration/multifd: Remove unnecessary assignment on multifd_load_cleanup(), Juan Quintela, 2023/02/12
- [PULL 20/22] migration/multifd: Join all multifd threads in order to avoid leaks, Juan Quintela, 2023/02/12