zEnterprise Data Compression (nurz/OS )

zEnterprise® Data Compression (zEDC) ist eine Lösung für die Beschleunigung der Hardware-und Softwarekomprimierung, die die Geschwindigkeit der Datenkomprimierung auf einigen z/OS® -Systemen erhöhen kann. Wenn Ihre Anwendung Java™ -Komprimierungsservices ausgiebig nutzt, kann zEDC die CPU-Belegung verringern und die Verarbeitungszeiten verkürzen.

Vorbereitende Schritte

Sie benötigen eines der folgenden Hardwaresysteme: IBM® zEnterprise zEC12 GA2, zBC12, z13® oder höher. Weitere Anforderungen hängen von Ihrem Hardwaresystem ab:Start der Änderungen für Serviceaktualisierung 6
z15® oder höher
Wenden Sie eines der folgenden PTFs entsprechend Ihrer Version von z/OSan:
  • z/OS 2.4: UJ00636
  • z/OS 2.3: UJ00635
  • z/OS 2.2: UJ00638
Für z/OS 2.5müssen keine zusätzlichen PTFs angewendet werden. Es gibt keine Hardwarevoraussetzungen für Systeme mit z15 oder höher. 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 oder früher
Ihr System muss außerdem die folgenden Voraussetzungen erfüllen:
  • Ein zEDC Express-Adapter, der in den PCIe-I/O-Schubladen des Hardwaresystems installiert ist.
  • Die zEDC -Softwarefunktionalität (ein optionales, bezahltes Feature) muss in einem Parmlib-Member IFAPRDxx aktiviert sein.
Die aktuelle Liste der Voraussetzungen finden Sie in der Dokumentation für Ihre Version von z/OS. Beispiel: Voraussetzungen für zEnterprise Data Compression.

Informationen zu dieser Task

zEDC unterstützt das Komprimierungsformat DEFLATE . Da es sich hierbei um ein Standardformat handelt, können Sie komprimierte oder dekomprimierte Daten zur Dekomprimierung oder Komprimierung auf ein anderes System als IBM Z®übertragen.

zEDC wird von einer IBM zlib-Bibliothek im Paket java.util.zip bereitgestellt. Weitere Informationen zu zEDC, finden Sie in der Dokumentation zu Ihrer z/OS, zum Beispiel: zEnterprise Data Compression (zEDC).

Vorgehensweise

  1. Nur z14 und früher: Erteilen Sie der Benutzer-ID, die die Java-Anwendung ausführt, Lesezugriff auf die Ressourcenklasse FPZ.ACCELERATOR.COMPRESSION .
    Diese Ressourcenklasse ist eine SAF-Ressourcenklasse FACILITY (SAF - System Authorization Facility), die den Zugriff auf den zEDC-Koprozessor regelt. Diese Anforderung gilt nicht für z15 oder höhere Prozessoren.
  2. Verwenden Sie die UNIX-Umgebungsvariable z/OS , _HZC_COMPRESSION_METHOD, um zu steuern, ob zEDC verwendet wird.
    zEDC wird standardmäßig verwendet. Wenn Sie diese Variable auf softwaresetzen, werden stattdessen softwarebasierte Komprimierungsservices verwendet. Wenn Sie einen beliebigen anderen Wert festlegen, wird zEDC verwendet.
  3. Stellen Sie sicher, dass die z/OS -Eingabepuffer für Ihre Java-Anwendung ausreichend groß sind.
    Einige CPU-Ressourcen sind erforderlich, um Daten zur Komprimierung oder Dekomprimierung an die zEDC-Funktion zu senden. Bei kleinen Datenvolumen kann dieser Ressourcenaufwand höher sein als die Einsparungen, die durch die Verwendung von zEDC erreicht werden. Sie können Schwellenwerte für die Daten festlegen, die von " zEDC; komprimiert und dekomprimiert werden. Wenn die Größe der Daten unter dem entsprechenden Schwellenwert liegt, wird stattdessen die Softwarekomprimierung von zlib verwendet:
    Start der Änderungen für Serviceaktualisierung 6
    z15 und höher
    Verwenden Sie die Umgebungsvariablen _HZC_DEFLATE_THRESHOLD und _HZC_INFLATE_THRESHOLD, um optional den Schwellenwert für die zEDC -Nutzung anzupassen. Gültige Werte in Byte liegen im Bereich von 1 bis 9999999. Beispiel: _HZC_DEFLATE_THRESHOLD=1 erzwingt die Verwendung von zEDCfür alle Komprimierungsanforderungen mit einer Anfangseingabegröße von mindestens 1 Byte. Wenn diese Umgebungsvariablen nicht festgelegt sind, wird der Standardschwellenwert 1024 für 'deflate' und 'inflate ' verwendet.
    Im Gegensatz zu den Parametern DEFMINREQSIZE und INFMINREQSIZE, die auf z14 oder früheren Systemen verwendet werden, sind die Umgebungsvariablen _HZC_DEFLATE_THRESHOLD und _HZC_INFLATE_THRESHOLD anwendungsspezifisch. Fügen Sie entweder die Variablen zu Ihrer Datei /etc/.profile hinzu, damit sie auf Ihr System angewendet werden, oder legen Sie sie für jede Anwendung fest, in der Sie den Systemstandardschwellenwert für die Datenkomprimierung über Hardware überschreiben möchten.
    Ende der Änderungen für Serviceaktualisierung 6
    z14 und früher
    Mit den Parametern DEFMINREQSIZE und INFMINREQSIZE des Parmlib-Members IQPPRMxx können Sie den Schwellenwert für zEDC -Nutzung steuern. Weitere Informationen finden Sie im Abschnitt zu IQPPRMxx in der Dokumentation zu Ihrer Version von z/OS. Beispiel: IQPPRMxx (PCIE-bezogene Parameter).

    Hinweis: Auf Prozessoren des Typs z15 oder höher ist das Parmlib-Member IQPPRMxx in der Konfiguration zulässig. Die Werte für DEFMINREQSIZE und INFMINREQSIZE werden jedoch nicht akzeptiert.

    Im Folgenden finden Sie einige Verfahren, mit denen Sie die aktuelle Puffergröße einer Anwendung bestimmen können:
    • Überprüfen 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-Referenz) oder sie mit einem Diagnosetool überwachen (siehe Diagnostic tools and data in der J9 VM-Referenz).
  4. Optional: Nur z14 und früher: Legen Sie die Speichermenge fest, die für z/OS -E/A-Puffer zugeordnet wird.
    Die von der zlib-Bibliothek generierten zEDC -Anforderungen verwenden vordefinierte z/OS -E/A-Pufferpools. Die Pufferpools enthalten eine Anzahl Speicherbereiche mit 16 MB, die als Segmente bezeichnet werden. Sie können die Größe der Pufferpools mithilfe des Parameters MAXSEGMENTS des parmlib-Members IQPPRMxx festlegen, um die Anzahl der Segmente anzugeben. Der Standardwert lautet 4 (64 MB). Weitere Informationen finden Sie im Abschnitt zu IQPPRMxx in der Dokumentation zu Ihrer Version von z/OS. Beispiel: IQPPRMxx (PCIE-bezogene Parameter).

    Anmerkung: Auf Prozessoren vom Typ z15 oder höher sind diese Puffer nicht erforderlich. Das parmlib-Member IQPPRMxx ist in der Konfiguration weiterhin zulässig, aber die Werte werden nicht akzeptiert.

  5. 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 DEFMINREQSIZE, so is elegible for compression by zEDC:
    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 zEDC verwendet. Andernfalls werden für die Datenkomprimierung und -dekomprimierung softwarebasierte Services verwendet.

Nächste Schritte

Sie können mit dem Befehl D IQP die aktuellen Werte für die zEDC-Parameter anzeigen. Die folgenden Beispiele zeigen die Befehlsausgabe:
Start der Änderungen für Serviceaktualisierung 6z15 oder höher:
RESPONSE=S5B                                       
 IQP066I 13.20.46 DISPLAY IQP 826                 
 zEDC Information                                 
  DEFMINREQSIZE:               1K (STATIC)          
  INFMINREQSIZE:               1K (STATIC)         
  Feature Enablement:    Enabled 
Ende der Änderungen für Serviceaktualisierung 6
z14 oder früher:
RESPONSE=CB8B
 IQP066I 05.55.28 DISPLAY IQP 458
 zEDC Information
  MAXSEGMENTS:            4 (64M)
  Previous MAXSEGMENTS:   N/A
  Allocated segments:     4 (64M)
  Used segments:          0 (0M)
  DEFMINREQSIZE:          4K
  INFMINREQSIZE:          32K
  Feature Enablement: Enabled