zEnterprise Data Compression (soloz/OS )

zEnterprise® Data Compression (zEDC) è una soluzione di accelerazione della compressione hardware e software che può aumentare la velocità di compressione dei dati su alcuni sistemi z/OS® . Se l'applicazione utilizza ampiamente i servizi di compressione Java™ , zEDC può fornire un utilizzo ridotto della CPU e tempi di elaborazione più brevi.

Prima di iniziare

È necessario disporre di uno dei seguenti sistemi hardware: IBM® zEnterprise zEC12 GA2, zBC12, z13® o versioni successive. Altri requisiti dipendono dal sistema hardware:Avvio delle modifiche per l'aggiornamento del servizio 6
z15® o successivo
Applicare una delle seguenti PTF in base al proprio livello di z/OS:
  • z/OS 2.4: UJ00636
  • z/OS 2.3: UJ00635
  • z/OS 2.2: UJ00638
Notare che per z/OS 2.5, non è necessario applicare ulteriori PTF. Non esistono requisiti hardware per z15 o sistemi successivi. La soluzione Integrated Accelerator for zEDC in questi sistemi fornisce l'accelerazione dei dati integrata, quindi non è più necessario un adattatore separato.
Fine delle modifiche per l'aggiornamento servizio 6
z14 o precedente
Il sistema deve avere anche i requisiti seguenti:
  • Un adattatore zEDC Express, installato nei cassetti PCIe I/O del sistema hardware.
  • La funzione software zEDC (una funzione facoltativa a pagamento) deve essere abilitata in un membro parmlib IFAPRDxx .
Per un elenco aggiornato dei requisiti, consultare la documentazione relativa alla versione di z/OS, ad esempio: Requisiti per zEnterprise Data Compression.

Informazioni su questa attività

zEDC supporta il formato di compressione DEFLATE . Poiché si tratta di un formato standard, è possibile trasferire i dati compressi o decompressi in un sistema diverso da IBM Z®, per la decompressione o la compressione.

zEDC viene fornito da una libreria zlib IBM all'interno del package java.util.zip . Per ulteriori informazioni su zEDC, consultare la documentazione relativa alla propria versione di z/OS, ad esempio: zEnterprise Data Compression (zEDC).

Procedura

  1. z14 e versioni precedenti: concedere l'accesso READ a FPZ.ACCELERATOR.COMPRESSION all'ID utente che eseguirà l'applicazione Java
    Questa classe di risorsa è una classe di risorsa SAF (System Authorization Facility) FACILITY, che regola l'accesso al coprocessore zEDC . Questo requisito non si applica ai processori z15 o successivi.
  2. Utilizzare la variabile di ambiente UNIX z/OS , _HZC_COMPRESSION_METHOD, per controllare se viene utilizzato zEDC .
    Per impostazione predefinita, viene utilizzato zEDC . Se si imposta questa variabile su software, vengono utilizzati invece i servizi di compressione basati sul software. Se si imposta un altro valore, viene utilizzato zEDC .
  3. Verificare che i buffer di input z/OS per l'applicazione Java siano sufficientemente grandi.
    Alcune risorse CPU sono richieste per inviare dati alla funzione zEDC per la compressione o la decompressione. Per piccole quantità di dati, questo costo della risorsa può essere maggiore del risparmio ottenuto utilizzando zEDC. È possibile impostare valori di soglia per i dati che vengono compressi e decompressi da zEDC; se la dimensione dei dati è inferiore alla soglia pertinente, viene utilizzata la compressione software zlib:
    Avvio delle modifiche per l'aggiornamento del servizio 6
    z15 e versioni successive
    Utilizzare le variabili di ambiente _HZC_DEFLATE_THRESHOLD e _HZC_INFLATE_THRESHOLD per regolare facoltativamente la soglia per l'utilizzo di zEDC . I valori validi, in byte, sono compresi nell'intervallo 1-9999999. Ad esempio, _HZC_DEFLATE_THRESHOLD=1 forza tutte le richieste deflate con una dimensione di input iniziale pari o superiore a 1 byte per utilizzare zEDC. Se queste variabili di ambiente non sono impostate, la soglia predefinita di 1024 viene utilizzata sia per deflate che per decomposizionare.
    A differenza dei parametri DEFMINREQSIZE e INFMINREQSIZE utilizzati sui sistemi z14 o precedenti, le variabili di ambiente _HZC_DEFLATE_THRESHOLD e _HZC_INFLATE_THRESHOLD sono specifiche dell'applicazione. Aggiungere le variabili al file /etc/.profile per applicarle al sistema oppure impostarle per ogni applicazione in cui si desidera sovrascrivere la soglia predefinita di sistema per la compressione hardware.
    Fine delle modifiche per l'aggiornamento servizio 6
    z14 e versioni precedenti
    Utilizzare i parametri DEFMINREQSIZE e INFMINREQSIZE del membro parmlib IQPPRMxx per controllare la soglia per l'utilizzo di zEDC . Per ulteriori informazioni, consultare la sezione IQPPRMxx nella documentazione per la propria versione di z/OS, ad esempio: IQPPRMxx (parametri correlati a PCIE).

    Nota: su z15 o processori successivi, il membro parmlib IQPPRMxx è consentito nella configurazione, ma i valori DEFMINREQSIZE e INFMINREQSIZE non sono accettati.

    Di seguito sono riportati alcuni metodi per determinare la dimensione del buffer corrente di un'applicazione:
  4. Facoltativo: z14 e versioni precedenti: impostare la quantità di memoria assegnata per i buffer I/O z/OS .
    Le richieste zEDC generate dalla libreria zlib utilizzano pool di buffer I/O z/OS predefiniti. I pool di buffer contengono un numero di aree di memorizzazione di 16 MB denominate segmenti. È possibile impostare la dimensione dei pool di buffer utilizzando il parametro MAXSEGMENT del membro parmlib IQPPRMxx per specificare il numero di segmenti. Il valore predefinito è 4 (64 MB). Per ulteriori informazioni, consultare la sezione IQPPRMxx nella documentazione per la propria versione di z/OS, ad esempio: IQPPRMxx (parametri correlati a PCIE).

    Nota: su processori z15 o successivi, questi buffer non sono richiesti. Il membro parmlib IQPPRMxx è ancora consentito nella configurazione, ma i valori non vengono accettati.

  5. Nell'applicazione Java, utilizzare le classi e i metodi nel package java.util.zip per comprimere e decomprimere i dati.
    Il seguente esempio (che esclude le importazioni e i blocchi try / catch) utilizza la classe GZIPOutputStream per leggere i dati da un file e scrivere i dati compressi in un altro file:
    // 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);
        }
    }

Risultati

Se il sistema soddisfa i requisiti e le condizioni descritte, viene utilizzato zEDC . In caso contrario, i servizi di compressione basati sul software vengono utilizzati per la compressione e la decompressione dei dati.

Cosa fare successivamente

È possibile utilizzare il comando D IQP per visualizzare i valori correnti per i parametri zEDC . I seguenti esempi mostrano l'output del comando:
Avvio delle modifiche per l'aggiornamento del servizio 6z15 o successivo:
RESPONSE=S5B                                       
 IQP066I 13.20.46 DISPLAY IQP 826                 
 zEDC Information                                 
  DEFMINREQSIZE:               1K (STATIC)          
  INFMINREQSIZE:               1K (STATIC)         
  Feature Enablement:    Enabled 
Fine delle modifiche per l'aggiornamento servizio 6
z14 o precedente:
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