Hardwarekomprimierungsbeschleunigung aktivieren (nur AIX, Linux)

Mit der Beschleunigung der Datenkomprimierung über Hardware können Sie die Geschwindigkeit der Datenkomprimierung und -dekomprimierung auf einigen Power Systems-oder IBM Z® -Systemen erhöhen. Wenn Ihre Anwendung java.util.zip -Klassen verwendet, um Java™ -Komprimierungsservices bereitzustellen, kann die Hardwarekomprimierung die CPU-Belegung reduzieren und Verarbeitungszeiten verkürzen.

Vorbereitende Schritte

Die Datenkomprimierung über Hardware wird von einer PCIe-Karte für die Datenkomprimierung/-dekomprimierung durchgeführt, die von dem GenWQE-Einheitentreiber (Generic Work Queue Engine) gesteuert wird, der in einigen Betriebssystemen bereitgestellt wird. Wenn Ihre Java-Anwendungen Hardwarekomprimierungsservices verwenden sollen, muss Ihr System die folgenden Software-und Hardwarevoraussetzungen erfüllen:
AIX
  • AIX® 7.1, Technology Level 3, Service Pack 2 oder höher
  • GenWQE-Einheitentreiber. Die vorher genannten Betriebssysteme schließen diesen Treiber bereits ein.
  • PCIe3 LP Field Programmable Gate Array (FPGA) Accelerator Adapter
Linux on Power Systems
  • Eines der folgenden Betriebssysteme:
    • Red Hat Enterprise Linux® 7 für 64-Bit-Power Systems
    • Start der Änderungen für Serviceaktualisierung 1Red Hat Enterprise Linux 7.1 für 64-Bit Power Systems (Little Endian)Ende der Änderungen für Serviceaktualisierung 1
    • Red Hat Enterprise Linux 7.3 für 64-Bit-Power Systems (Little Endian)
  • GenWQE-Einheitentreiber. Die vorher genannten Betriebssysteme schließen diesen Treiber bereits ein.
  • PCIe3 LP Field Programmable Gate Array (FPGA) Accelerator Adapter
Start der Änderungen für Serviceaktualisierung 2 Fixpack 10
Linux on IBM Z
  • Eines der folgenden Hardwaresysteme: IBM zEnterprise® zEC12 GA2, zBC12, z13, z14, Start der Änderungen für Serviceaktualisierung 6z15 oder höherEnde der Änderungen für Serviceaktualisierung 6. Weitere Anforderungen hängen von Ihrem Hardwaresystem ab:
Start der Änderungen für Serviceaktualisierung 6
z15 und höher
Es gibt keine Hardware-oder Softwarevoraussetzungen für z15 oder höhere Systeme. Die Integrated Accelerator for zEDC -Lösung in diesen Systemen bietet integrierte Datenbeschleunigung, sodass ein separater Adapter nicht mehr benötigt wird.
Ende der Änderungen für Serviceaktualisierung 6
z14 und früher
  • Eines der folgenden Betriebssysteme:
    • SUSE Linux Enterprise Server für System z® 12 SP1 oder höher
    • Start der Änderungen für Serviceaktualisierung 3Red Hat Enterprise Linux 7.2 für z Systems ®Ende der Änderungen für Serviceaktualisierung 3
  • GenWQE-Einheitentreiber. Die vorher genannten Betriebssysteme schließen diesen Treiber bereits ein.
  • IBM® zEnterprise zEC12 GA2, zBC12, z13oder z14.
  • zEDC Express-Adapter, in den PCIe-E/A-Einschüben des Servers installiert.
Hinweis: Die Hardwarekomprimierung auf z14 -Systemen und früheren Systemen verwendet den zEDC Express-Adapter, der jetzt veraltet ist.
Ende der Änderungen für Serviceaktualisierung 2 Fixpack 10

Weitere Informationen zur Installation und Verwendung von GenWQE, finden Sie in der Einführung zu Generic Work Queue Engine ( GenWQE ) in den Informationen zu Linux.

Informationen zu dieser Task

Die Beschleunigung der Datenkomprimierung wird als Teil der nativen Developer Kit-Zip-Bibliothek bereitgestellt, die Sie über die Anwendungsprogrammierschnittstelle java.util.zip aufrufen.

Vorgehensweise

  1. Nurz14 und früher: Setzen Sie die folgenden Umgebungsvariablen:
    export ZLIB_DEFLATE_IMPL=1
    export ZLIB_INFLATE_IMPL=1
    Diese Umgebungsvariablen geben an, ob die Komprimierung oder Dekomprimierung von Hardware oder Software verwendet wird. Standardmäßig sind beide Variablen auf 0 gesetzt, was bedeutet, dass die Softwarekomprimierungsservices sowohl für die Komprimierung als auch für die Dekomprimierung für Java-Anwendungen verwendet werden.
  2. Nurz14 und früher: Überprüfen Sie, ob die Eingabepuffer für Ihre Java-Anwendung ausreichend groß sind.

    Einige CPU-Ressourcen sind erforderlich, um Daten an die Hardwarekomprimierungsbeschleunigung zu senden. Bei kleinen Datenvolumen kann dieser Ressourcenaufwand höher sein als die Einsparungen, die durch die Verwendung der Hardwarekomprimierungsservices erreicht werden. Mit der Variablen ZLIB_INFLATE_THRESHOLD können Sie einen Schwellenwert für die Daten festlegen, die an die Hardwarekomprimierungsservices gesendet werden sollen. Wenn die Größe der Daten unterhalb dieses Schwellenwerts (Standardwert: 16 KB) liegt, wird stattdessen die Softwarekomprimierung verwendet.

    Im Folgenden finden Sie einige Verfahren, mit denen Sie die aktuelle Puffergröße einer Anwendung bestimmen können:
    • Untersuchen Sie den Quellcode.
    • Untersuchen Sie das Verhalten der Anwendung, indem Sie einen Trace für sie erstellen (siehe Tracing Java applications in der J9 VM Reference), oder überwachen Sie sie mit einem Tool.
  3. Verwenden Sie in Ihrer Java-Anwendung die Klassen und Methoden im Paket java.util.zip , um Daten zu komprimieren und zu dekomprimieren.
    Im folgenden Beispiel (das Importe und try/catch-Blöcke ausschließt) wird die Klasse GZIPOutputStream verwendet, um Daten aus einer Datei zu lesen und komprimierte Daten in eine andere Datei zu schreiben:
    // This 64 KB input buffer exceeds the threshold value set by ZLIB_INFLATE_THRESHOLD, 
    // so is elegible for hardware compression:
    byte buffer[] = new byte[64 * 1024];
    byte outputFile[];
    
    input = new FileInputStream(argv[0]);
    output = new ByteArrayOutputStream();
    gzStream = new GZIPOutputStream(output, 4096);
    
    for(;;) {
        // Read data from an uncompressed file:
        readBytes = input.read(buffer);
        if(readBytes < 0) {
            break;
        }
        else {
            // Write data to a compressed file:
            gzStream.write(buffer, 0, readBytes);
        }
    }

Ergebnisse

Wenn das System die beschriebenen Voraussetzungen und Bedingungen erfüllt, wird eine beschleunigte Hardwaredatenkomprimierung verwendet. Andernfalls werden für die Datenkomprimierung und -dekomprimierung softwarebasierte Services verwendet.

Wenn Sie den Leistungsunterschied für Ihre Java-Anwendung mit und ohne Hardwarekomprimierung messen möchten, können Sie die folgenden Umgebungsvariablen verwenden, um die Hardwarebeschleunigung vorübergehend zu inaktivieren:
  • Start der Änderungen für Serviceaktualisierung 6z15 oder höher: DFLTCC=0Ende der Änderungen für Serviceaktualisierung 6
  • z14 oder früher: ZLIB_DEFLATE_IMPL=0 für die Komprimierung und ZLIB_INFLATE_IMPL=0 für die Dekomprimierung.

Wenn Probleme auftreten, lesen Sie die Informationen unter Probleme mit der Hardwarekomprimierungsbeschleunigung auf Power Systems-und IBM Z -Systemen (AIX, nur Linux ).