mirror of
https://github.com/ceph/ceph
synced 2024-12-21 10:54:42 +00:00
6488e116c3
This patch update the documentation about QAT acceleration for encryption and compression. QATZip provide the interfaces for several compression algorithm, including deflate, snapp and lz4, but currently only deflate can be accelerated by QAT hardware. Signed-off-by: Qiaowei Ren <qiaowei.ren@intel.com>
95 lines
3.9 KiB
ReStructuredText
95 lines
3.9 KiB
ReStructuredText
===============================================
|
|
QAT Acceleration for Encryption and Compression
|
|
===============================================
|
|
|
|
Intel QAT (QuickAssist Technology) can provide extended accelerated encryption
|
|
and compression services by offloading the actual encryption and compression
|
|
request(s) to the hardware QuickAssist accelerators, which are more efficient
|
|
in terms of cost and power than general purpose CPUs for those specific
|
|
compute-intensive workloads.
|
|
|
|
See `QAT Support for Compression`_ and `QAT based Encryption for RGW`_.
|
|
|
|
|
|
QAT in the Software Stack
|
|
=========================
|
|
|
|
Application developers can access QuickAssist features through the QAT API.
|
|
The QAT API is the top-level API for QuickAssist technology, and enables easy
|
|
interfacing between the customer application and the QuickAssist acceleration
|
|
driver.
|
|
|
|
The QAT API accesses the QuickAssist driver, which in turn drives the
|
|
QuickAssist Accelerator hardware. The QuickAssist driver is responsible for
|
|
exposing the acceleration services to the application software.
|
|
|
|
A user can write directly to the QAT API, or the use of QAT can be done via
|
|
frameworks that have been enabled by others including Intel (for example, zlib*,
|
|
OpenSSL* libcrypto*, and the Linux* Kernel Crypto Framework).
|
|
|
|
QAT Environment Setup
|
|
=====================
|
|
1. QuickAssist Accelerator hardware is necessary to make use of accelerated
|
|
encryption and compression services. And QAT driver in kernel space have to
|
|
be loaded to drive the hardware.
|
|
|
|
The driver package can be downloaded from `Intel Quickassist Technology`_.
|
|
|
|
2. The implementation for QAT based encryption is directly base on QAT API which
|
|
is included the driver package. But QAT support for compression depends on
|
|
QATzip project, which is a user space library which builds on top of the QAT
|
|
API. Currently, QATzip speeds up gzip compression and decompression at the
|
|
time of writing.
|
|
|
|
See `QATzip`_.
|
|
|
|
Implementation
|
|
==============
|
|
1. QAT based Encryption for RGW
|
|
|
|
`OpenSSL support for RGW encryption`_ has been merged into Ceph, and Intel also
|
|
provides one `QAT Engine`_ for OpenSSL. So, theoretically speaking, QAT based
|
|
encryption in Ceph can be directly supported through OpenSSl+QAT Engine.
|
|
|
|
But the QAT Engine for OpenSSL currently supports chained operations only, and
|
|
so Ceph will not be able to utilize QAT hardware feature for crypto operations
|
|
based on OpenSSL crypto plugin. As a result, one QAT plugin based on native
|
|
QAT API is added into crypto framework.
|
|
|
|
2. QAT Support for Compression
|
|
|
|
As mentioned above, QAT support for compression is based on QATzip library in
|
|
user space, which is designed to take full advantage of the performance provided
|
|
by QuickAssist Technology. Unlike QAT based encryption, QAT based compression
|
|
is supported through a tool class for QAT acceleration rather than a compressor
|
|
plugin. The common tool class can transparently accelerate the existing compression
|
|
types, but only zlib compressor can be supported at the time of writing. So
|
|
user is allowed to use it to speed up zlib compressor as long as the QAT
|
|
hardware is available and QAT is capable to handle it.
|
|
|
|
Configuration
|
|
=============
|
|
1. QAT based Encryption for RGW
|
|
|
|
Edit the Ceph configuration file to make use of QAT based crypto plugin::
|
|
|
|
plugin crypto accelerator = crypto_qat
|
|
|
|
2. QAT Support for Compression
|
|
|
|
One CMake option have to be used to trigger QAT based compression::
|
|
|
|
-DWITH_QATZIP=ON
|
|
|
|
Edit the Ceph configuration file to enable QAT support for compression::
|
|
|
|
qat compressor enabled=true
|
|
|
|
|
|
.. _QAT Support for Compression: https://github.com/ceph/ceph/pull/19714
|
|
.. _QAT based Encryption for RGW: https://github.com/ceph/ceph/pull/19386
|
|
.. _Intel Quickassist Technology: https://01.org/intel-quickassist-technology
|
|
.. _QATzip: https://github.com/intel/QATzip
|
|
.. _OpenSSL support for RGW encryption: https://github.com/ceph/ceph/pull/15168
|
|
.. _QAT Engine: https://github.com/intel/QAT_Engine
|