IBM Power9 and Power10 servers include a GZIP based hardware accelerator that is supported by AIX 7.2 and 7.3. This article presents how to configure and use the accelerator.AIX uses a clone of the zlib library named zlibNX that transparently uses the accelerator when available. The pigz command available for AIX 7.2 and 7.3 uses zlibNX to accelerate file compression and decompression; openSSH leverages zlibNX when configured for compression, and the create_ova command, available in AIX 7.3, uses the pigz command for creating OVA files for cloud deployments to compress their contents. DB2 and IBM Semeru for Java runtimes also take advantage of the accelerator through the use of zlibNX when available and configured.
Contributors: @Brian F. Veale, @NICK STILWELL, and @Carl Burnett
Hardware Acceleration on Power Systems
Each processor chip in a Power9 and Power10 server has an on-chip “nest” accelerator called the NX unit that provides specialized functions for general data compression, gzip compression, encryption, and random number generation. These accelerators are used transparently across the systems software stack to speed up operations related to Live Partition Migration, IPSec, JFS2 Encrypted File Systems, PKCS11 encryption, and random number generation through /dev/random and /dev/urandom.
The on-chip NX GZIP accelerator on POWER9 systems implements a high throughput deflate format (RFC 1951) compression engine capable of performing the equivalent work of tens to hundreds of cores.
Performance Study
We investigated the performance of compression using accelerated zlibNX versus software based compression through zlib using the Silesia compression corpus as input data to the hardware accelerator and zlib software compression engine. Using a single threaded application running on a Power10 system at 3.55 GHz with AIX 7.3 TL 0 we see up to a 200 times more compression throughput using the accelerated zlibNX with the hardware GZIP compression accelerator over software-based zlib compression. See the figure below for more details.
Requirements
Supported Systems:
- Power9 running FW940 or later
- Power10 or later
Required LPAR Configuration:
The LPAR must be configured to run in ‘Power9’ or ‘Power10’ or later processor compatibility mode. The GZIP accelerator is not available to partitions when running ‘Power9_base’ processor compatibility mode.
See below for more information on how to check the processor compatibility mode.
Other system requirements will vary depending on the application workload running on the partition.
CPU and Memory Recommendations:
Minimum 1 processor and 6 GB of memory.
Supported AIX levels:
AIX 7.2 TL 4, AIX 7.2 TL 5, and AIX 7.3 and later.
Validating required FW level (only needed for Power9 systems)
On Power9 the system must be running FW940 or later.
The FW level and configuration can be verified via the AIX command line via the prtconf command:
# prtconf
System Model: *
Machine Serial Number: *
Processor Type: PowerPC_POWER9
Processor Implementation Mode: POWER 9
Processor Version: PV_9_Compat
Number Of Processors: 4
Processor Clock Speed: 3000 MHz
CPU Type: 64-bit
Kernel Type: 64-bit
LPAR Info: *
Memory Size: 32768 MB
Good Memory Size: 32768 MB
Platform Firmware level: VH940_027
Firmware Version: IBM,FW940.00 (VH940_027)
Processor Compatibility Mode Configuration
On Power9 the LPAR must be running in ‘Power9’ processor compatibility mode and on Power10 the LPAR must be running ‘Power9’ or ‘Power10’ processor compatibility mode. The accelerator is not supported when running in ‘Power9_base’ processor compatibility mode.
The current processor compatibility mode can be verified from an HMC that manages the partition. Navigate to the partition’s properties page, click the Processor tab and click Advanced. The Effective Processor Compatibility
Note that changes to the mode require a reboot of the partition in order to take effect.
Using the nxstat command to validate configuration of the hardware GZIP accelerator
Starting with AIX 7.2 TL 5 SP 3 (7200-05-03-2136) and AIX 7.3 you can validate that the LPAR is properly configured to use the hardware GZIP accelerator using the nxstat -S command. Below are examples showing an LPAR where the accelerator is not available and where it is available.
This example is on an LPAR set to use the POWER9_base processor compatibility mode resulting in the compression accelerator not being available:
# nxstat -S
nx_accel_mask = 0
** No accelerators available **
** Accelerators are not available for partitions in POWER9_base mode
And in the example below, the accelerator is available (after switching to POWER9 or POWER10 mode):
# nxstat -S
nx_accel_mask = 1
GZIP accelerator available
Installation of the zlibNX library and pigz Commands
This table shows where you can obtain the zlibNX library and the pigz command
AIX Level |
Where to get zlibNX.rte |
Where to get the pigz command
|
AIX 7.2 TL 4 |
Expansion Pack |
AIX Toolbox for Open Source Software |
AIX 7.2 TL 5 SP 1 |
Expansion Pack |
AIX Toolbox for Open Source Software |
AIX 7.2 TL 5 SP 2 and later
|
AIX Installation Media |
AIX Toolbox for Open Source Software |
AIX 7.3 and later
|
Installed by default (AIX installation media) |
Installed by default (AIX installation media)
|
How to install from the Expansion Pack: https://www.ibm.com/docs/en/aix/7.2?topic=notes-aix-720-expansion-pack-release
AIX Toolbox for Open Source Software: https://www.ibm.com/support/pages/aix-toolbox-open-source-software-downloads-alpha#P
How to setup DNF to install from the AIX Toolbox for Open Source Software: https://community.ibm.com/community/user/power/blogs/sangamesh-mallayya1/2021/05/28/dnf-is-now-available-on-aix-toolbox
See below for examples of how to install zlibNX.rte and pigz.
Note that IBM is no longer focusing on updates to the xgzip command for AIX since the open-source based pigz utility leverages the zlibNX library to accelerate compression and is easier to obtain and install.
zlibNX library
Depdending on which AIX level you are on, you can either get the zlibNX library from the installation media or the Expansion Pack. If you are on AIX 7.3 it is installed by default.
To install from the expansion pack or installation media you either mount the media and copy the zlibnx.rte fileset to the local partition or install directly from the media. In the example below the media or expansion pack is mounted on /dev/cd0:
Run installp to install zlibNX:
# installp -aXgqY -d/dev/cd0 zlibNX.rte
Verify installation with the lslpp command:
# lslpp -l zlibNX.rte
Fileset Level State Description
---------------------------------------------------------------------
Path: /usr/lib/objrepos
zlibNX.rte 7.2.4.0 COMMITTED NX accelerated zlib
compression library
Pigz command:
You can install pigz directly from the AIX Toolbox for Open Source Software using dnf. Note, if you are running AIX 7.3, pigz is already installed by default.
See here for information on how to configure DNF: https://community.ibm.com/community/user/power/blogs/sangamesh-mallayya1/2021/05/28/dnf-is-now-available-on-aix-toolbox
# dnf install pigz
Verify installation with the dnf command:
# dnf list installed pigz
Installed Packages
pigz.ppc 2.4-1 @AIX_Toolbox
Using the pigz Commands
pigz similar flags and parameters as the gzip command. Below is an example of compressing a file (and keeping the original file) using gzip, and pigz:
# pigz –c mybackup > mybackup.gz
# gzip -c mybackup > mybackup.gz
For more usage information, the pigz man page can be found here: https://zlib.net/pigz/pigz.pdf
Using OpenSSH with hardware GZIP accelertation
OpenSSH now includes the capability to exploit the hardware GZIP accelerator using the -C option for commands such as scp and sftp when properly configured. This section discusses where to get OpenSSH for AIX from and the basic configuration steps required to enable compression acceleration.
You must have installed zlibNX.rte (if on AIX 7.3 it is installed by default) and configured the LPAR to run in a processor compatibility mode supporting hardware GZIP acceleration (see above in this document on how to configure the LPAR and install zlibNX).
The requisite OpenSSH fileset is available on the AIX installation media as well as the AIX web download pack here: https://www-01.ibm.com/marketing/iwm/iwm/web/pickUrxNew.do?source=aixbp&S_PKG=openssh
To exploit hardware GZIP acceleration with OpenSSH it is recommended that you use at least version 8 .1.102.2104 or later.
It is recommended that the latest version of OpenSSL be used to address known security vulnerabilities. The latest version is available here: : https://www-01.ibm.com/marketing/iwm/iwm/web/pickUrxNew.do?source=aixbp&S_PKG=openssl
To install either mount the AIX installation media and copy the fileset to a local partition or install from the media. If installing a version from the AIX Web Download pack them copy the downloaded tarball file to the local partition, uncompress it, and install as shown below.
Installing from the AIX Web Download Pack
In the example below the OpenSSH tarball is located on a local disk. When uncompressed with tar a sub-directory will be created containing the packages to be installed.
# gunzip OpenSSH_8.1.102.2104.tar.Z
# tar -xvf OpenSSH_8.1.102.2104.tar
# installp -aXgqY -d ./OpenSSH_8.1.102.2104 openssh.base
Verify installation with the lslpp command:
# lslpp -l openssh.base.client openssh.base.server
Fileset Level State Description
----------------------------------------------------------------------------
Path: /usr/lib/objrepos
openssh.base.client 8.1.102.2104 COMMITTED Open Secure Shell Commands
openssh.base.server 8.1.102.2104 COMMITTED Open Secure Shell Server
Path: /etc/objrepos
openssh.base.client 8.1.102.2104 COMMITTED Open Secure Shell Commands
openssh.base.server 8.1.102.2104 COMMITTED Open Secure Shell Server
Configure OpenSSH to use the hardware GZIP accelerator
Once OpenSSH is installed, you can configure OpenSSH to user hardware GZIP acceleration when the -C command is specified by following these steps:
On the server:
Set the value for ‘Compression’ in sshd_config to ‘delayed’ or ‘yes’. A value of ‘delayed’ is recommended so that compression is not enabled until the user has authenticated. The setting of ‘delayed’ ensures that there is no risk of a zlib vulnerability leading to a compromise of the server from non-authenticated users.
You also need to add the keyword EnableHwCompression to sshd_config and set it to yes to enable hardware compression acceleration.
# grep Compression /etc/ssh/sshd_configCompression delayedEnableHwCompression yes
Then, you must stop and restart the SSH daemon using stopsrc and startsrc:
# stopsrc -s sshd
# startsrc -s sshd
On the client:
Add the keyword EnableHwCompression to ssh_config and set it to yes to enable hardware compression acceleration.
# grep Compression /etc/ssh/ssh_config EnableHwCompression yes
Using OpenSSH with the hardware GZIP accelerator
Once SSH is installed and configured, zlibNX.rte is installed, and the LPAR is configured appropriately you can use the sftp, scp, and ssh commands with the -C option:
# ssh -C user@hostname
# sftp -C user@hostname
# scp -C file_to_transfer user@hostname:/destination_directory_path
Enabling Existing Applications to Leverage hardware GZIP acceleration
Applications that dynamically link with zlib can be accelerated by zlibNX using one of the following methods:
Set the LDR_PRELOAD or LDR_PRELOAD64 variable to load the hardware-accelerated zlib library before the standard zlib library as shown below:
# LDR_PRELOAD="/usr/opt/zlibNX/lib/libz.a(libz.so.1)" <32-bit application>
# LDR_PRELOAD64="/usr/opt/zlibNX/lib/libz.a(libz.so.1)" <64-bit application>
Set the LD_LIBRARY_PATH variable as shown below:
# LD_LIBRARY_PATH=/usr/opt/zlibNX/lib:$LD_LIBRARY_PATH <application>
Set the LIBPATH variable as shown below:
# LIBPATH=/usr/opt/zlibNX/lib:$LIBPATH <application>
IBM Semeru Runtimes for Java and DB2 Exploitation of hardware GZIP acceleration
DB2 Backup and Restore
DB2 11.5.7 and later automatically takes advantage of the GZIP accelerator when the zlibNX library is installed and the GZIP accelerator is enabled (see above under Installation and Configuration on AIX). Acceleration is leveraged for compression and decompression operations during backup and restore operations.
See here for more information: https://www.ibm.com/docs/en/db2/11.5?topic=1157-high-availability-backup-resiliency-recovery-enhancements
IBM Semeru Runtimes for Java
Starting with IBM Semeru Runtime Open / Certified Edition for Java versions 8, 11, 16, and 17 on AIX, the runtime environment now uses the system provided zlib library such that zlibNX is automatically used when available and the GZIP accelerator is available (see above under Installation and Configuration on AIX). Acceleration is automatically leveraged for both internal compression operations (in handling of zip and jar files) as well as by the java.util.zip class library that provides compression services for programs.
IBM Semeru Runtimes can be downloaded here: https://developer.ibm.com/languages/java/semeru-runtimes/downloads
Resources