Message ID | 1600766690-94980-3-git-send-email-lei.rao@intel.com |
---|---|
State | New |
Headers | show |
Series | Optimized some code for COLO | expand |
> -----Original Message----- > From: Rao, Lei <lei.rao@intel.com> > Sent: Tuesday, September 22, 2020 5:25 PM > To: Zhang, Chen <chen.zhang@intel.com>; lizhijian@cn.fujitsu.com; > jasowang@redhat.com; quintela@redhat.com; dgilbert@redhat.com; > pbonzini@redhat.com > Cc: qemu-devel@nongnu.org; Rao, Lei <lei.rao@intel.com> > Subject: [PATCH v2 2/3] Reduce the time of checkpoint for COLO > > we should set ram_bulk_stage to false after ram_state_init, otherwise the > bitmap will be unused in migration_bitmap_find_dirty. > all pages in ram cache will be flushed to the ram of secondary guest for each > checkpoint. > > Signed-off-by: leirao <lei.rao@intel.com> Reviewed-by: Zhang Chen <chen.zhang@intel.com> Thanks Zhang Chen > --- > migration/ram.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/migration/ram.c b/migration/ram.c index 76d4fee..59ff0cf 100644 > --- a/migration/ram.c > +++ b/migration/ram.c > @@ -3018,6 +3018,18 @@ static void > decompress_data_with_multi_threads(QEMUFile *f, > qemu_mutex_unlock(&decomp_done_lock); > } > > + /* > + * we must set ram_bulk_stage to fasle, otherwise in > + * migation_bitmap_find_dirty the bitmap will be unused and > + * all the pages in ram cache wil be flushed to the ram of > + * secondary VM. > + */ > +static void colo_init_ram_state(void) > +{ > + ram_state_init(&ram_state); > + ram_state->ram_bulk_stage = false; > +} > + > /* > * colo cache: this is for secondary VM, we cache the whole > * memory of the secondary VM, it is need to hold the global lock @@ - > 3061,7 +3073,7 @@ int colo_init_ram_cache(void) > } > } > > - ram_state_init(&ram_state); > + colo_init_ram_state(); > return 0; > } > > -- > 1.8.3.1
On 9/22/20 5:24 PM, leirao wrote: > we should set ram_bulk_stage to false after ram_state_init, > otherwise the bitmap will be unused in migration_bitmap_find_dirty. > all pages in ram cache will be flushed to the ram of secondary guest > for each checkpoint. > > Signed-off-by: leirao <lei.rao@intel.com> > --- > migration/ram.c | 14 +++++++++++++- > 1 file changed, 13 insertions(+), 1 deletion(-) > > diff --git a/migration/ram.c b/migration/ram.c > index 76d4fee..59ff0cf 100644 > --- a/migration/ram.c > +++ b/migration/ram.c > @@ -3018,6 +3018,18 @@ static void decompress_data_with_multi_threads(QEMUFile *f, > qemu_mutex_unlock(&decomp_done_lock); > } > > + /* > + * we must set ram_bulk_stage to fasle, otherwise in a typo: s/fasle/false Reviewed-by: Li Zhijian <lizhijian@cn.fujitsu.com> > + * migation_bitmap_find_dirty the bitmap will be unused and > + * all the pages in ram cache wil be flushed to the ram of > + * secondary VM. > + */ > +static void colo_init_ram_state(void) > +{ > + ram_state_init(&ram_state); > + ram_state->ram_bulk_stage = false; > +} > + > /* > * colo cache: this is for secondary VM, we cache the whole > * memory of the secondary VM, it is need to hold the global lock > @@ -3061,7 +3073,7 @@ int colo_init_ram_cache(void) > } > } > > - ram_state_init(&ram_state); > + colo_init_ram_state(); > return 0; > } >
diff --git a/migration/ram.c b/migration/ram.c index 76d4fee..59ff0cf 100644 --- a/migration/ram.c +++ b/migration/ram.c @@ -3018,6 +3018,18 @@ static void decompress_data_with_multi_threads(QEMUFile *f, qemu_mutex_unlock(&decomp_done_lock); } + /* + * we must set ram_bulk_stage to fasle, otherwise in + * migation_bitmap_find_dirty the bitmap will be unused and + * all the pages in ram cache wil be flushed to the ram of + * secondary VM. + */ +static void colo_init_ram_state(void) +{ + ram_state_init(&ram_state); + ram_state->ram_bulk_stage = false; +} + /* * colo cache: this is for secondary VM, we cache the whole * memory of the secondary VM, it is need to hold the global lock @@ -3061,7 +3073,7 @@ int colo_init_ram_cache(void) } } - ram_state_init(&ram_state); + colo_init_ram_state(); return 0; }
we should set ram_bulk_stage to false after ram_state_init, otherwise the bitmap will be unused in migration_bitmap_find_dirty. all pages in ram cache will be flushed to the ram of secondary guest for each checkpoint. Signed-off-by: leirao <lei.rao@intel.com> --- migration/ram.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)