Use multiple thread (de)compression in live migration
=====================================================
Copyright (C) 2015 Intel Corporation
Author: Liang Li <liang.z.li@intel.com>

This work is licensed under the terms of the GNU GPLv2 or later. See
the COPYING file in the top-level directory.

Contents:
=========
* Introduction
* When to use
* Performance
* Usage
* TODO

Introduction
============
Instead of sending the guest memory directly, this solution will
compress the RAM page before sending; after receiving, the data will
be decompressed. Using compression in live migration can help
to reduce the data transferred about 60%, this is very useful when the
bandwidth is limited, and the total migration time can also be reduced
about 70% in a typical case. In addition to this, the VM downtime can be
reduced about 50%. The benefit depends on data's compressibility in VM.

The process of compression will consume additional CPU cycles, and the
extra CPU cycles will increase the migration time. On the other hand,
the amount of data transferred will decrease; this factor can reduce
the total migration time. If the process of the compression is quick
enough, then the total migration time can be reduced, and multiple
thread compression can be used to accelerate the compression process.

The decompression speed of Zlib is at least 4 times as quick as
compression, if the source and destination CPU have equal speed,
keeping the compression thread count 4 times the decompression
thread count can avoid resource waste.

Compression level can be used to control the compression speed and the
compression ratio. High compression ratio will take more time, level 0
stands for no compression, level 1 stands for the best compression
speed, and level 9 stands for the best compression ratio. Users can
select a level number between 0 and 9.


When to use the multiple thread compression in live migration
=============================================================
Compression of data will consume extra CPU cycles; so in a system with
high overhead of CPU, avoid using this feature. When the network
bandwidth is very limited and the CPU resource is adequate, use of
multiple thread compression will be very helpful. If both the CPU and
the network bandwidth are adequate, use of multiple thread compression
can still help to reduce the migration time.

Performance
===========
Test environment:

CPU: Intel(R) Xeon(R) CPU E5-2680 0 @ 2.70GHz
Socket Count: 2
RAM: 128G
NIC: Intel I350 (10/100/1000Mbps)
Host OS: CentOS 7 64-bit
Guest OS: RHEL 6.5 64-bit
Parameter: qemu-system-x86_64 -enable-kvm -smp 4 -m 4096
 /share/ia32e_rhel6u5.qcow -monitor stdio

There is no additional application is running on the guest when doing
the test.


Speed limit: 1000Gb/s
---------------------------------------------------------------
                    | original  | compress thread: 8
                    |   way     | decompress thread: 2
                    |           | compression level: 1
---------------------------------------------------------------
total time(msec):   |   3333    |  1833
---------------------------------------------------------------
downtime(msec):     |    100    |   27
---------------------------------------------------------------
transferred ram(kB):|  363536   | 107819
---------------------------------------------------------------
throughput(mbps):   |  893.73   | 482.22
---------------------------------------------------------------
total ram(kB):      |  4211524  | 4211524
---------------------------------------------------------------

There is an application running on the guest which write random numbers
to RAM block areas periodically.

Speed limit: 1000Gb/s
---------------------------------------------------------------
                    | original  | compress thread: 8
                    |   way     | decompress thread: 2
                    |           | compression level: 1
---------------------------------------------------------------
total time(msec):   |   37369   | 15989
---------------------------------------------------------------
downtime(msec):     |    337    |  173
---------------------------------------------------------------
transferred ram(kB):|  4274143  | 1699824
---------------------------------------------------------------
throughput(mbps):   |  936.99   | 870.95
---------------------------------------------------------------
total ram(kB):      |  4211524  | 4211524
---------------------------------------------------------------

Usage
=====
1. Verify both the source and destination QEMU are able
to support the multiple thread compression migration:
    {qemu} info migrate_capabilities
    {qemu} ... compress: off ...

2. Activate compression on the source:
    {qemu} migrate_set_capability compress on

3. Set the compression thread count on source:
    {qemu} migrate_set_parameter compress_threads 12

4. Set the compression level on the source:
    {qemu} migrate_set_parameter compress_level 1

5. Set the decompression thread count on destination:
    {qemu} migrate_set_parameter decompress_threads 3

6. Start outgoing migration:
    {qemu} migrate -d tcp:destination.host:4444
    {qemu} info migrate
    Capabilities: ... compress: on
    ...

The following are the default settings:
    compress: off
    compress_threads: 8
    decompress_threads: 2
    compress_level: 1 (which means best speed)

So, only the first two steps are required to use the multiple
thread compression in migration. You can do more if the default
settings are not appropriate.

TODO
====
Some faster (de)compression method such as LZ4 and Quicklz can help
to reduce the CPU consumption when doing (de)compression. If using
these faster (de)compression method, less (de)compression threads
are needed when doing the migration.
