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:
- 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.

- 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
- 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.
- 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 .
- 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:

- 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.

- 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:
- 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 IQPPRM
xx 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.
- 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:
z15 o successivo:RESPONSE=S5B
IQP066I 13.20.46 DISPLAY IQP 826
zEDC Information
DEFMINREQSIZE: 1K (STATIC)
INFMINREQSIZE: 1K (STATIC)
Feature Enablement: Enabled

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