QATzip Compression
In scenarios with limited network bandwidth, the QATzip
solution can help
users save a lot of host CPU resources by accelerating compression and
decompression through the Intel QuickAssist Technology(QAT
) hardware.
The following test was conducted using 8 multifd channels and 10Gbps network
bandwidth. The results show that, compared to zstd, QATzip
significantly
saves CPU resources on the sender and reduces migration time. Compared to the
uncompressed solution, QATzip
greatly improves the dirty page processing
capability, indicated by the Pages per Second metric, and also reduces the
total migration time.
VM Configuration: 16 vCPU and 64G memory
VM Workload: all vCPUs are idle and 54G memory is filled with Silesia data.
QAT Devices: 4
|-----------|--------|---------|----------|----------|------|------|
|8 Channels |Total |down |throughput|pages per | send | recv |
| |time(ms)|time(ms) |(mbps) |second | cpu %| cpu% |
|-----------|--------|---------|----------|----------|------|------|
|qatzip | 16630| 28| 10467| 2940235| 160| 360|
|-----------|--------|---------|----------|----------|------|------|
|zstd | 20165| 24| 8579| 2391465| 810| 340|
|-----------|--------|---------|----------|----------|------|------|
|none | 46063| 40| 10848| 330240| 45| 85|
|-----------|--------|---------|----------|----------|------|------|
QATzip Compression Framework
QATzip
is a user space library which builds on top of the Intel QuickAssist
Technology to provide extended accelerated compression and decompression
services.
For more QATzip
introduction, please refer to QATzip Introduction
+----------------+
| MultiFd Thread |
+-------+--------+
|
| compress/decompress
+-------+--------+
| QATzip library |
+-------+--------+
|
+-------+--------+
| QAT library |
+-------+--------+
| user space
--------+---------------------
| kernel space
+------+-------+
| QAT Driver |
+------+-------+
|
+------+-------+
| QAT Devices |
+--------------+
QATzip Installation
The QATzip
installation package has been integrated into some Linux
distributions and can be installed directly. For example, the Ubuntu Server
24.04 LTS system can be installed using below command
#apt search qatzip
libqatzip-dev/noble 1.2.0-0ubuntu3 amd64
Intel QuickAssist user space library development files
libqatzip3/noble 1.2.0-0ubuntu3 amd64
Intel QuickAssist user space library
qatzip/noble,now 1.2.0-0ubuntu3 amd64 [installed]
Compression user-space tool for Intel QuickAssist Technology
#sudo apt install libqatzip-dev libqatzip3 qatzip
If your system does not support the QATzip
installation package, you can
use the source code to build and install, please refer to QATzip source code installation
QAT Hardware Deployment
QAT
supports physical functions(PFs) and virtual functions(VFs) for
deployment, and users can configure QAT
resources for migration according
to actual needs. For more details about QAT
deployment, please refer to
Intel QuickAssist Technology Documentation
For more QAT
hardware introduction, please refer to intel-quick-assist-technology-overview
How To Use QATzip Compression
1 - Install QATzip
library
2 - Build QEMU
with --enable-qatzip
parameter
E.g. configure –target-list=x86_64-softmmu –enable-kvm
--enable-qatzip
3 - Set migrate_set_parameter multifd-compression qatzip
4 - Set migrate_set_parameter multifd-qatzip-level comp_level
, the default
comp_level value is 1, and it supports levels from 1 to 9
QAT Memory Requirements
The user needs to reserve system memory for the QAT memory management to allocate DMA memory. The size of the reserved system memory depends on the number of devices used for migration and the number of multifd channels.
Because memory usage depends on QAT configuration, please refer to QAT Memory Driver Queries for memory usage calculation.
Number of channels |
Sender memory usage |
Receiver memory usage |
---|---|---|
2 |
10M |
10M |
4 |
12M |
14M |
8 |
16M |
20M |
How To Choose Between QATzip and QPL
Starting from 4th Gen Intel Xeon Scalable processors, codenamed Sapphire Rapids
processor(SPR
), multiple built-in accelerators are supported including
QAT
and IAA
. The former can accelerate QATzip
and the latter is
used to accelerate QPL
.
Here are some suggestions:
1 - If the live migration scenario is limited by network bandwidth and QAT
hardware resources exceed IAA
, use the QATzip
method, which can save a
lot of host CPU resources for compression.
2 - If the system cannot support shared virtual memory (SVM) technology, use
the QATzip
method because QPL
performance is not good without SVM
support.
3 - For other scenarios, use the QPL
method first.