[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 09/22] migration: Calculate ram size once
From: |
Xxx Xx |
Subject: |
[PULL 09/22] migration: Calculate ram size once |
Date: |
Mon, 13 Feb 2023 03:28:58 +0100 |
From: Juan Quintela <quintela@redhat.com>
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
- [PULL 01/22] migration: Remove spurious files, (continued)
- [PULL 01/22] migration: Remove spurious files, Xxx Xx, 2023/02/12
- [PULL 03/22] multifd: Remove some redundant code, Xxx Xx, 2023/02/12
- [PULL 04/22] linux-headers: Update to v6.1, Xxx Xx, 2023/02/12
- [PULL 05/22] util/userfaultfd: Support /dev/userfaultfd, Xxx Xx, 2023/02/12
- [PULL 08/22] migration: Split ram_bytes_total_common() in two functions, Xxx Xx, 2023/02/12
- [PULL 07/22] migration: Make find_dirty_block() return a single parameter, Xxx Xx, 2023/02/12
- [PULL 06/22] migration: Simplify ram_find_and_save_block(), Xxx Xx, 2023/02/12
- [PULL 10/22] migration: Make ram_save_target_page() a pointer, Xxx Xx, 2023/02/12
- [PULL 11/22] migration: I messed state_pending_exact/estimate, Xxx Xx, 2023/02/12
- [PULL 12/22] AVX512 support for xbzrle_encode_buffer, Xxx Xx, 2023/02/12
- [PULL 09/22] migration: Calculate ram size once,
Xxx Xx <=
- [PULL 13/22] Update bench-code for addressing CI problem, Xxx Xx, 2023/02/12
- [PULL 14/22] migration: Rework multi-channel checks on URI, Xxx Xx, 2023/02/12
- [PULL 15/22] migration: Cleanup postcopy_preempt_setup(), Xxx Xx, 2023/02/12
- [PULL 16/22] migration: Add a semaphore to count PONGs, Xxx Xx, 2023/02/12
- [PULL 17/22] migration: Postpone postcopy preempt channel to be after main, Xxx Xx, 2023/02/12
- [PULL 19/22] migration/multifd: Remove unnecessary assignment on multifd_load_cleanup(), Xxx Xx, 2023/02/12
- [PULL 20/22] migration/multifd: Join all multifd threads in order to avoid leaks, Xxx Xx, 2023/02/12
- [PULL 21/22] migration/multifd: Move load_cleanup inside incoming_state_destroy, Xxx Xx, 2023/02/12
- [PULL 22/22] ram: Document migration ram flags, Xxx Xx, 2023/02/12
- [PULL 18/22] migration/multifd: Change multifd_load_cleanup() signature and usage, Xxx Xx, 2023/02/12