The GenWQE accelerated zlib

6.10 LPAR mode z/VM guest

The GenWQE accelerated zlib can replace a zlib software library.

For data compression and decompression tasks, Linux® distributions include software libraries. The zlib library, which provides the zlib API, is one of the most commonly used libraries for data compression and decompression. For information about zlib, see www.zlib.net.

Because the GenWQE accelerated zlib offers the zlib API, applications can use it instead of the default zlib software library. The GenWQE hardware-accelerated zlib is designed to enhance performance by offloading tasks to a hardware accelerator.
Figure 1. GenWQE accelerated zlib
This graphic depicts the GenWQE that components as described in the text that follows.

Applications

As an experimental setup, you can deploy the user space components of the GenWQE hardware-accelerated zlib. This zlib implementation is then available to applications that request data compression functions through the zlib API.
The following applications are designed to use GenWQE if it is available:
  • genwqe_gzip and genwqe_gunzip, which are GenWQE versions of gzip and gunzip.

    These tools can be used for most purposes, but they do not implement all of the more unusual options of their common code counterparts. See the man pages to find out which options are supported.

  • genwqe_echo, a tool to confirm the availability of accelerator hardware through the GenWQE accelerated zlib .

IBM® Java™ version 7.1 or later includes components of the GenWQE hardware-accelerated zlib. Through these components, it can directly address the GenWQE device nodes. With the required environment variables in place, it uses hardware-acceleration if it is available.

Hardware-accelerated zlib

The hardware-accelerated zlib is a zlib implementation that acts as a wrapper for two included libraries:
libzHW
a hardware library that prepares requests for processing by the hardware accelerator. The hardware library is intended to handle the bulk of the requests.

This library also manages data buffers for optimized hardware compression.

libz
a software implementation of the zlib interface. Because it provides the same interface as its wrapper library, it can handle any requests unmodified.
The hardware-accelerated zlib arbitrates between the two included libraries. It uses the software library as a backup if no hardware accelerator is available. It also evaluates the expected performance gain against the extra processing for channeling requests to the accelerator. For small or fragmented data, software processing might be advantageous, especially for decompression. The evaluation takes available resources, such as buffer space, into account.

Card library

The card library, libcard, mediates between the hardware-accelerated zlib library and the GenWQE device driver. It provides recovery features and can move jobs between available accelerators.

Device driver

The GenWQE device driver is the kernel part of GenWQE. It serializes requests to an accelerator in form of device driver control blocks (DDCBs), and it enables multi-process and multi-thread usage.