Message ID | 1597634433-18809-8-git-send-email-zhengchuan@huawei.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | *** A Method for evaluating dirty page rate *** | expand |
* Chuan Zheng (zhengchuan@huawei.com) wrote: > In order to sample real RAM, skip ramblock with size below > > Signed-off-by: Chuan Zheng <zhengchuan@huawei.com> OK, Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com> > --- > migration/dirtyrate.c | 24 ++++++++++++++++++++++++ > migration/dirtyrate.h | 5 +++++ > 2 files changed, 29 insertions(+) > > diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c > index 3ce25f5..6f30f67 100644 > --- a/migration/dirtyrate.c > +++ b/migration/dirtyrate.c > @@ -186,6 +186,24 @@ alloc_ramblock_dirty_info(int *block_index, > return block_dinfo; > } > > +static int skip_sample_ramblock(RAMBlock *block) > +{ > + int64_t ramblock_size; > + > + /* ramblock size in MB */ > + ramblock_size = qemu_ram_get_used_length(block) >> 20; > + > + /* > + * Consider ramblock with size larger than 128M is what we > + * want to sample. > + */ > + if (ramblock_size < MIN_RAMBLOCK_SIZE) { > + return -1; > + } > + > + return 0; > +} > + > static int record_ramblock_hash_info(struct RamblockDirtyInfo **block_dinfo, > struct DirtyRateConfig config, > int *block_index) > @@ -196,6 +214,9 @@ static int record_ramblock_hash_info(struct RamblockDirtyInfo **block_dinfo, > int index = 0; > > RAMBLOCK_FOREACH_MIGRATABLE(block) { > + if (skip_sample_ramblock(block) < 0) { > + continue; > + } > dinfo = alloc_ramblock_dirty_info(&index, dinfo); > if (dinfo == NULL) { > return -1; > @@ -275,6 +296,9 @@ static int compare_page_hash_info(struct RamblockDirtyInfo *info, > RAMBlock *block = NULL; > > RAMBLOCK_FOREACH_MIGRATABLE(block) { > + if (skip_sample_ramblock(block) < 0) { > + continue; > + } > block_dinfo = NULL; > if (!find_page_matched(block, info, block_index + 1, &block_dinfo)) { > continue; > diff --git a/migration/dirtyrate.h b/migration/dirtyrate.h > index 0812b16..fce2e3b 100644 > --- a/migration/dirtyrate.h > +++ b/migration/dirtyrate.h > @@ -31,6 +31,11 @@ > > #define QCRYPTO_HASH_LEN 16 > > +/* > + * minimum ramblock size to sampled > + */ > +#define MIN_RAMBLOCK_SIZE 128 > + > /* Take 1s as default for calculation duration */ > #define DEFAULT_FETCH_DIRTYRATE_TIME_SEC 1 > > -- > 1.8.3.1 >
diff --git a/migration/dirtyrate.c b/migration/dirtyrate.c index 3ce25f5..6f30f67 100644 --- a/migration/dirtyrate.c +++ b/migration/dirtyrate.c @@ -186,6 +186,24 @@ alloc_ramblock_dirty_info(int *block_index, return block_dinfo; } +static int skip_sample_ramblock(RAMBlock *block) +{ + int64_t ramblock_size; + + /* ramblock size in MB */ + ramblock_size = qemu_ram_get_used_length(block) >> 20; + + /* + * Consider ramblock with size larger than 128M is what we + * want to sample. + */ + if (ramblock_size < MIN_RAMBLOCK_SIZE) { + return -1; + } + + return 0; +} + static int record_ramblock_hash_info(struct RamblockDirtyInfo **block_dinfo, struct DirtyRateConfig config, int *block_index) @@ -196,6 +214,9 @@ static int record_ramblock_hash_info(struct RamblockDirtyInfo **block_dinfo, int index = 0; RAMBLOCK_FOREACH_MIGRATABLE(block) { + if (skip_sample_ramblock(block) < 0) { + continue; + } dinfo = alloc_ramblock_dirty_info(&index, dinfo); if (dinfo == NULL) { return -1; @@ -275,6 +296,9 @@ static int compare_page_hash_info(struct RamblockDirtyInfo *info, RAMBlock *block = NULL; RAMBLOCK_FOREACH_MIGRATABLE(block) { + if (skip_sample_ramblock(block) < 0) { + continue; + } block_dinfo = NULL; if (!find_page_matched(block, info, block_index + 1, &block_dinfo)) { continue; diff --git a/migration/dirtyrate.h b/migration/dirtyrate.h index 0812b16..fce2e3b 100644 --- a/migration/dirtyrate.h +++ b/migration/dirtyrate.h @@ -31,6 +31,11 @@ #define QCRYPTO_HASH_LEN 16 +/* + * minimum ramblock size to sampled + */ +#define MIN_RAMBLOCK_SIZE 128 + /* Take 1s as default for calculation duration */ #define DEFAULT_FETCH_DIRTYRATE_TIME_SEC 1
In order to sample real RAM, skip ramblock with size below Signed-off-by: Chuan Zheng <zhengchuan@huawei.com> --- migration/dirtyrate.c | 24 ++++++++++++++++++++++++ migration/dirtyrate.h | 5 +++++ 2 files changed, 29 insertions(+)