zEnterprise Compresión de datos (soloz/OS )

zEnterprise® Data Compression (zEDC) es una solución de aceleración de compresión de hardware y software que puede aumentar la velocidad de compresión de datos en algunos sistemas z/OS® . Si la aplicación utiliza ampliamente los servicios de compresión Java™ , zEDC puede proporcionar un consumo de CPU reducido y tiempos de proceso más cortos.

Antes de empezar

Debe tener uno de los siguientes sistemas de hardware: IBM® zEnterprise zEC12 GA2, zBC12, z13® o posterior. Otros requisitos dependen del sistema de hardware:Inicio de cambios para la actualización del servicio 6
z15® o posterior
Aplique uno de los siguientes PTF, según el nivel de z/OS:
  • z/OS 2.4: UJ00636
  • z/OS 2.3: UJ00635
  • z/OS 2.2: UJ00638
Tenga en cuenta que para z/OS 2.5, no es necesario aplicar PTF adicionales. No hay requisitos de hardware para los sistemas z15 o posteriores. La solución Accelerator for zEDC en estos sistemas proporciona aceleración de datos integrada, por lo que ya no es necesario un adaptador independiente.
Fin de los cambios para la renovación de servicio 6
z14 o anteriores
El sistema también debe tener los siguientes requisitos:
  • Un adaptador zEDC Express, que se instala en los cajones de E/S PCIe del sistema de hardware.
  • La característica de software zEDC (una característica de pago opcional) debe habilitarse en un miembro parmlib IFAPRDxx
Para obtener la lista de requisitos más actualizada, consulte la documentación de su versión de z/OS, por ejemplo: Requisitos para zEnterprise Data Compression.

Acerca de esta tarea

zEDC da soporte al formato de compresión DEFLATE . Puesto que se trata de un formato estándar, puede transferir datos comprimidos o descomprimidos a un sistema que no sea IBM Z®, para su descompresión o compresión.

zEDC lo proporciona una biblioteca IBM zlib dentro del paquete java.util.zip . Para obtener más información sobre zEDC, consulte la documentación de su versión de z/OS, por ejemplo: zEnterprise Data Compression (zEDC).

Procedimiento

  1. z14 y anteriores únicamente: Otorgar acceso de lectura (READ) a FPZ.ACCELERATOR.COMPRESSION para el ID de usuario que ejecutará la aplicación Java.
    Esta clase de recursos es una clase de recursos FACILITY de System Authorization Facility (SAF), que regula el acceso al coprocesador zEDC. Este requisito no se aplica a los procesadores z15 o posteriores.
  2. Utilice la variable de entorno z/OS UNIX, _HZC_COMPRESSION_METHOD, para controlar si se utiliza zEDC .
    De forma predeterminada, se utiliza zEDC. Si establece esta variable en software, se utilizan en su lugar los servicios de compresión basados en software. Si se establece cualquier otro valor, se utiliza zEDC.
  3. Asegúrese de que los almacenamientos intermedios de entrada de z/OS para la aplicación Java son suficientemente grandes.
    Algún recurso de CPU es necesario para enviar datos a la característica zEDC para compresión o descompresión. Para pequeñas cantidades de datos, el coste de este recurso puede ser mayor que el ahorro que se logra utilizando zEDC. Puede establecer valores de umbral para los datos que comprime y descomprime zEDC; si el tamaño de los datos está por debajo del umbral relevante, se utiliza la compresión de software zlib en su lugar:
    Inicio de cambios para la actualización del servicio 6
    z15 y posteriores
    Utilice las variables de entorno _HZC_DEFLATE_THRESHOLD y _HZC_INFLATE_THRESHOLD para ajustar opcionalmente el umbral para el uso de zEDC . Los valores válidos, en bytes, están en el rango 1-9999999. Por ejemplo, _HZC_DEFLATE_THRESHOLD=1 fuerza todas las solicitudes de disminución con un tamaño de entrada inicial de 1 byte o más grande para utilizar zEDC. Si estas variables de entorno no están establecidas, se utiliza el umbral predeterminado de 1024 para deflate e inflate.
    A diferencia de los parámetros DEFMINREQSIZE e INFMINREQSIZE que se utilizan en z14 o sistemas anteriores, las variables de entorno _HZC_DEFLATE_THRESHOLD y _HZC_INFLATE_THRESHOLD son específicas de la aplicación. Añada las variables al archivo /etc/.profile para que se apliquen en el sistema o establézcalas para cada aplicación en la que desee alterar temporalmente el umbral predeterminado del sistema para la compresión de hardware.
    Fin de los cambios para la renovación de servicio 6
    z14 y anteriores
    Utilice los parámetros DEFMINREQSIZE e INFMINREQSIZE del miembro parmlib IQPPRMxx para controlar el umbral para el uso de zEDC. Para obtener más información, consulte la sección IQPPRMxx en la documentación de su versión de z/OS, por ejemplo: IQPPRMxx (parámetros relacionados con PCIE).

    Nota: En los procesadores z15 o posteriores, se permite el miembro parmlib IQPPRMxx en la configuración pero no se aceptan los valores DEFMINREQSIZE e INFMINREQSIZE.

    Estos son algunos métodos para determinar el tamaño del almacenamiento intermedio actual de una aplicación:
  4. Opcional: z14 y anteriores únicamente: Establezca la cantidad de almacenamiento asignado para almacenamientos intermedios de E/S de z/OS .
    Las solicitudes zEDC generadas por la biblioteca zlib utilizan agrupaciones de almacenamiento intermedio de E/S z/OS predefinidas. Las agrupaciones de almacenamiento contienen varias áreas de almacenamiento de 16 MB denominadas segments. Puede establecer el tamaño de las agrupaciones de almacenamiento intermedio utilizando el parámetro MAXSEGMENTS del miembro parmlib IQPPRMxx para especificar el número de segmentos. El valor predeterminado es 4 (64 MB). Para obtener más información, consulte la sección IQPPRMxx en la documentación de su versión de z/OS, por ejemplo: IQPPRMxx (parámetros relacionados con PCIE).

    Nota: En los procesadores z15 o posteriores, estos almacenamientos intermedios no son necesarios. El miembro parmlib IQPPRMxx todavía está permitido en la configuración, pero los valores no se aceptan.

  5. En la aplicación Java, utilice las clases y métodos del paquete java.util.zip para comprimir y descomprimir datos.
    El siguiente ejemplo (que excluye importaciones y bloques try/catch) utiliza la clase GZIPOutputStream para leer datos de un archivo y grabar datos comprimidos en otro archivo:
    // 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);
        }
    }

Resultados

Si el sistema cumple con los requisitos y las condiciones que se describen, se utiliza zEDC. En caso contrario, se utilizarán los servicios de compresión basados en software para la compresión y descompresión de datos.

Qué hacer a continuación

Puede utilizar el mandato D IQP para ver los valores actuales para los parámetros zEDC. Los ejemplos siguientes muestran la salida del mandato:
Inicio de cambios para la actualización del servicio 6z15 o posterior:
RESPONSE=S5B                                       
 IQP066I 13.20.46 DISPLAY IQP 826                 
 zEDC Information                                 
  DEFMINREQSIZE:               1K (STATIC)          
  INFMINREQSIZE:               1K (STATIC)         
  Feature Enablement:    Enabled 
Fin de los cambios para la renovación de servicio 6
z14 o anteriores:
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