[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.
- [Qemu-devel] [v7 01/14] docs: Add a doc about multiple thread compression, (continued)
- [Qemu-devel] [v7 01/14] docs: Add a doc about multiple thread compression, Liang Li, 2015/04/08
- [Qemu-devel] [v7 04/14] qemu-file: Add compression functions to QEMUFile, Liang Li, 2015/04/08
- [Qemu-devel] [v7 02/14] migration: Add the framework of multi-thread compression, Liang Li, 2015/04/08
- [Qemu-devel] [v7 03/14] migration: Add the framework of multi-thread decompression, Liang Li, 2015/04/08
- [Qemu-devel] [v7 05/14] arch_init: Alloc and free data struct for compression, Liang Li, 2015/04/08
- [Qemu-devel] [v7 06/14] arch_init: Add and free data struct for decompression, Liang Li, 2015/04/08
- [Qemu-devel] [v7 07/14] migration: Split save_zero_page from ram_save_page, Liang Li, 2015/04/08
- [Qemu-devel] [v7 08/14] migration: Add the core code of multi-thread compression, Liang Li, 2015/04/08
- [Qemu-devel] [v7 09/14] migration: Make compression co-work with xbzrle, Liang Li, 2015/04/08
- Re: [Qemu-devel] [v7 09/14] migration: Make compression co-work with xbzrle,
Juan Quintela <=
- [Qemu-devel] [v7 10/14] migration: Add the core code for decompression, Liang Li, 2015/04/08
- [Qemu-devel] [v7 11/14] migration: Add interface to control compression, Liang Li, 2015/04/08
- [Qemu-devel] [v7 12/14] migration: Use an array instead of 3 parameters, Liang Li, 2015/04/08