qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [v7 09/14] migration: Make compression co-work with xbz


From: Juan Quintela
Subject: Re: [Qemu-devel] [v7 09/14] migration: Make compression co-work with xbzrle
Date: Wed, 08 Apr 2015 13:26:05 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux)

Liang Li <address@hidden> wrote:
> Now, multiple thread compression can co-work with xbzrle. when
> xbzrle is on, multiple thread compression will only work at the
> first round of RAM data sync.
>
> Signed-off-by: Liang Li <address@hidden>
> Signed-off-by: Yang Zhang <address@hidden>
> Reviewed-by: Dr.David Alan Gilbert <address@hidden>

Reviewed-by: Juan Quintela <address@hidden>


>  /* The empty QEMUFileOps will be used by file in CompressParam */
>  static const QEMUFileOps empty_ops = { };
> +static bool compression_switch;
> +
>  static DecompressParam *decomp_param;
>  static QemuThread *decompress_threads;
>  static uint8_t *compressed_data_buf;
> @@ -436,6 +438,7 @@ void migrate_compress_threads_create(void)
>      if (!migrate_use_compression()) {
>          return;
>      }
> +    compression_switch = true;
>      thread_count = migrate_compress_threads();
>      compress_threads = g_new0(QemuThread, thread_count);
>      comp_param = g_new0(CompressParam, thread_count);
> @@ -1059,9 +1062,16 @@ static int ram_find_and_save_block(QEMUFile *f, bool 
> last_stage,
>                  block = QLIST_FIRST_RCU(&ram_list.blocks);
>                  complete_round = true;
>                  ram_bulk_stage = false;
> +                if (migrate_use_xbzrle()) {
> +                    /* If xbzrle is on, stop using the data compression at 
> this
> +                     * point. In theory, xbzrle can do better than 
> compression.
> +                     */
> +                    flush_compressed_data(f);
> +                    compression_switch = false;
> +                }

I still think that it should be better:
a- don't mix them (or)
b- if we mix them, just use compression always that we sent whole pages.
   if xbzrle is not able to compress a page, use compression after
   putting the page on the cache.  i.e. try first to set through xbzrle,
   and if that don't work, use compression if possible (after zecond
   iteration, of course).)


But as you are the one doing the code....

Later, Juan.

PD. Yes, it can be changed later.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]