From 4c491120579726a00d8c09d52148a406262273e0 Mon Sep 17 00:00:00 2001 From: "Huawei Technologies Co., Ltd" Date: Wed, 16 Sep 2020 14:21:58 +0800 Subject: [PATCH] migration/dirtyrate: Add RamblockDirtyInfo to store sampled page info Add RamblockDirtyInfo to store sampled page info of each ramblock. Signed-off-by: Chuan Zheng Reviewed-by: Dr. David Alan Gilbert Reviewed-by: David Edmondson Reviewed-by: Li Qiang Message-Id: <1600237327-33618-4-git-send-email-zhengchuan@huawei.com> Signed-off-by: Dr. David Alan Gilbert --- ...ate-Add-RamblockDirtyInfo-to-store-s.patch | 54 +++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 migration-dirtyrate-Add-RamblockDirtyInfo-to-store-s.patch diff --git a/migration-dirtyrate-Add-RamblockDirtyInfo-to-store-s.patch b/migration-dirtyrate-Add-RamblockDirtyInfo-to-store-s.patch new file mode 100644 index 0000000..8028a29 --- /dev/null +++ b/migration-dirtyrate-Add-RamblockDirtyInfo-to-store-s.patch @@ -0,0 +1,54 @@ +From 17b0582ebba622afbd8f454bbee8141ed2785f13 Mon Sep 17 00:00:00 2001 +From: Chuan Zheng +Date: Wed, 16 Sep 2020 14:21:58 +0800 +Subject: [PATCH] migration/dirtyrate: Add RamblockDirtyInfo to store sampled + page info + +Add RamblockDirtyInfo to store sampled page info of each ramblock. + +Signed-off-by: Chuan Zheng +Reviewed-by: Dr. David Alan Gilbert +Reviewed-by: David Edmondson +Reviewed-by: Li Qiang +Message-Id: <1600237327-33618-4-git-send-email-zhengchuan@huawei.com> +Signed-off-by: Dr. David Alan Gilbert +--- + migration/dirtyrate.h | 18 ++++++++++++++++++ + 1 file changed, 18 insertions(+) + +diff --git a/migration/dirtyrate.h b/migration/dirtyrate.h +index 84ab9409ac..8707df852d 100644 +--- a/migration/dirtyrate.h ++++ b/migration/dirtyrate.h +@@ -19,10 +19,28 @@ + */ + #define DIRTYRATE_DEFAULT_SAMPLE_PAGES 512 + ++/* ++ * Record ramblock idstr ++ */ ++#define RAMBLOCK_INFO_MAX_LEN 256 ++ + struct DirtyRateConfig { + uint64_t sample_pages_per_gigabytes; /* sample pages per GB */ + int64_t sample_period_seconds; /* time duration between two sampling */ + }; + ++/* ++ * Store dirtypage info for each ramblock. ++ */ ++struct RamblockDirtyInfo { ++ char idstr[RAMBLOCK_INFO_MAX_LEN]; /* idstr for each ramblock */ ++ uint8_t *ramblock_addr; /* base address of ramblock we measure */ ++ uint64_t ramblock_pages; /* ramblock size in TARGET_PAGE_SIZE */ ++ uint64_t *sample_page_vfn; /* relative offset address for sampled page */ ++ uint64_t sample_pages_count; /* count of sampled pages */ ++ uint64_t sample_dirty_count; /* count of dirty pages we measure */ ++ uint32_t *hash_result; /* array of hash result for sampled pages */ ++}; ++ + void *get_dirtyrate_thread(void *arg); + #endif +-- +2.27.0 +