4 In scenarios with limited network bandwidth, the ``QATzip`` solution can help
5 users save a lot of host CPU resources by accelerating compression and
6 decompression through the Intel QuickAssist Technology(``QAT``) hardware.
9 The following test was conducted using 8 multifd channels and 10Gbps network
10 bandwidth. The results show that, compared to zstd, ``QATzip`` significantly
11 saves CPU resources on the sender and reduces migration time. Compared to the
12 uncompressed solution, ``QATzip`` greatly improves the dirty page processing
13 capability, indicated by the Pages per Second metric, and also reduces the
18 VM Configuration: 16 vCPU and 64G memory
19 VM Workload: all vCPUs are idle and 54G memory is filled with Silesia data.
21 |-----------|--------|---------|----------|----------|------|------|
22 |8 Channels |Total |down |throughput|pages per | send | recv |
23 | |time(ms)|time(ms) |(mbps) |second | cpu %| cpu% |
24 |-----------|--------|---------|----------|----------|------|------|
25 |qatzip | 16630| 28| 10467| 2940235| 160| 360|
26 |-----------|--------|---------|----------|----------|------|------|
27 |zstd | 20165| 24| 8579| 2391465| 810| 340|
28 |-----------|--------|---------|----------|----------|------|------|
29 |none | 46063| 40| 10848| 330240| 45| 85|
30 |-----------|--------|---------|----------|----------|------|------|
33 QATzip Compression Framework
34 ============================
36 ``QATzip`` is a user space library which builds on top of the Intel QuickAssist
37 Technology to provide extended accelerated compression and decompression
40 For more ``QATzip`` introduction, please refer to `QATzip Introduction
41 <https://github.com/intel/QATzip?tab=readme-ov-file#introductionl>`_
58 --------+---------------------
72 The ``QATzip`` installation package has been integrated into some Linux
73 distributions and can be installed directly. For example, the Ubuntu Server
74 24.04 LTS system can be installed using below command
79 libqatzip-dev/noble 1.2.0-0ubuntu3 amd64
80 Intel QuickAssist user space library development files
82 libqatzip3/noble 1.2.0-0ubuntu3 amd64
83 Intel QuickAssist user space library
85 qatzip/noble,now 1.2.0-0ubuntu3 amd64 [installed]
86 Compression user-space tool for Intel QuickAssist Technology
88 #sudo apt install libqatzip-dev libqatzip3 qatzip
90 If your system does not support the ``QATzip`` installation package, you can
91 use the source code to build and install, please refer to `QATzip source code installation
92 <https://github.com/intel/QATzip?tab=readme-ov-file#build-intel-quickassist-technology-driver>`_
94 QAT Hardware Deployment
95 -----------------------
97 ``QAT`` supports physical functions(PFs) and virtual functions(VFs) for
98 deployment, and users can configure ``QAT`` resources for migration according
99 to actual needs. For more details about ``QAT`` deployment, please refer to
100 `Intel QuickAssist Technology Documentation
101 <https://intel.github.io/quickassist/index.html>`_
103 For more ``QAT`` hardware introduction, please refer to `intel-quick-assist-technology-overview
104 <https://www.intel.com/content/www/us/en/architecture-and-technology/intel-quick-assist-technology-overview.html>`_
106 How To Use QATzip Compression
107 =============================
109 1 - Install ``QATzip`` library
111 2 - Build ``QEMU`` with ``--enable-qatzip`` parameter
113 E.g. configure --target-list=x86_64-softmmu --enable-kvm ``--enable-qatzip``
115 3 - Set ``migrate_set_parameter multifd-compression qatzip``
117 4 - Set ``migrate_set_parameter multifd-qatzip-level comp_level``, the default
118 comp_level value is 1, and it supports levels from 1 to 9
120 QAT Memory Requirements
121 =======================
123 The user needs to reserve system memory for the QAT memory management to
124 allocate DMA memory. The size of the reserved system memory depends on the
125 number of devices used for migration and the number of multifd channels.
127 Because memory usage depends on QAT configuration, please refer to `QAT Memory
129 <https://intel.github.io/quickassist/PG/infrastructure_debugability.html?highlight=memory>`_
130 for memory usage calculation.
132 .. list-table:: An example of a PF used for migration
135 * - Number of channels
136 - Sender memory usage
137 - Receiver memory usage
148 How To Choose Between QATzip and QPL
149 ====================================
150 Starting from 4th Gen Intel Xeon Scalable processors, codenamed Sapphire Rapids
151 processor(``SPR``), multiple built-in accelerators are supported including
152 ``QAT`` and ``IAA``. The former can accelerate ``QATzip`` and the latter is
153 used to accelerate ``QPL``.
155 Here are some suggestions:
157 1 - If the live migration scenario is limited by network bandwidth and ``QAT``
158 hardware resources exceed ``IAA``, use the ``QATzip`` method, which can save a
159 lot of host CPU resources for compression.
161 2 - If the system cannot support shared virtual memory (SVM) technology, use
162 the ``QATzip`` method because ``QPL`` performance is not good without SVM
165 3 - For other scenarios, use the ``QPL`` method first.