O zEnterprise® Data Compression (zEDC) é uma solução de aceleração de compactação de hardware e software que pode aumentar a velocidade da compactação de dados em alguns sistemas z/OS® Se seu aplicativo usar serviços de compactação Java™ extensivamente, o zEDC poderá fornecer consumo de CPU reduzido e tempos de processamento mais curtos.
Antes de começar
Você deve ter um dos seguintes sistemas de hardware: IBM® zEnterprise zEC12 GA2, zBC12, z13® ou mais recente. Outros requisitos dependem do sistema de hardware:
- z15® ou posterior
- Aplique uma das seguintes PTFs, de acordo com seu nível de z/OS:
- z/OS 2.4: UJ00636
- z/OS 2.3: UJ00635
- z/OS 2.2: UJ00638
Observe que para o z/OS 2.5, PTFs adicionais não precisam ser aplicadas Não há requisitos de hardware para z15 ou sistemas posteriores. A solução Integrated Accelerator for zEDC nesses sistemas fornece aceleração de dados integrada, portanto, um adaptador separado não é mais necessário..

- z14 ou anterior
- Seu sistema também deve ter os seguintes requisitos:
- Um adaptador zEDC Express, que é instalado nas gavetas de E/S PCIe do sistema de hardware.
- O recurso de software zEDC (um recurso opcional, pago) deve ser ativado em um membro parmlib IFAPRDxx .
Para obter a lista mais atualizada de requisitos, consulte a documentação para sua versão do z/OS, por exemplo: Requisitos para zEnterprise Compactação de Dados.
Sobre essa tarefa
zEDC suporta o formato de compactação DEFLATE . Como este é um formato padrão, é possível transferir dados compactados ou descompactado para um sistema diferente de IBM Z®, para descompactação ou compactação
zEDC é fornecido por uma biblioteca zlib IBM no pacote java.util.zip . Para obter mais informações sobre o zEDC, consulte a documentação de sua versão do z/OS, por exemplo: zEnterprise Data Compression (zEDC).
Procedimento
- z14 e anterior: Conceda acesso READ ao FPZ.ACCELERATOR.COMPRESSION para o ID do usuário que executará o aplicativo Java.
Essa classe de recurso é uma classe de recurso FACILITY do System Authorization Facility (SAF),
que regula o acesso ao coprocessador zEDC. Esse requisito não se aplica a processadores z15 ou mais recentes
- Use a variável de ambiente do UNIX do z/OS , _HZC_COMPRESSION_METHOD, para controlar se zEDC é usado.
Por padrão, o zEDC é usado. Se você configurar essa variável como software, os serviços de compactação baseados em software serão usados no lugar. Se você configurar qualquer outro valor,
o zEDC será usado.
- Assegure-se de que os buffers de entrada do z/OS para seu aplicativo Java sejam suficientemente grandes.
Alguns recursos da CPU são necessários para enviar dados para o recurso zEDC para compactação
ou descompactação. Para pequenas quantidades de dados, esse custo de recursos pode ser maior que a economia
obtida usando o zEDC. Você pode definir valores de limite para os dados que são compactados e descompactados pelo zEDC; se o tamanho dos dados estiver abaixo do limite relevante, será usada a compactação de software zlib:

- z15 e posterior
- Use as variáveis de ambiente _HZC_DEFLATE_THRESHOLD e _HZC_INFLATE_THRESHOLD para ajustar opcionalmente o limite para o uso do zEDC . Os valores válidos, em bytes, estão no intervalo de 1 a 9999999 Por exemplo,
_HZC_DEFLATE_THRESHOLD=1 força todas as solicitações de deflação com um tamanho de entrada inicial de 1 byte ou maior a usar zEDC. Se essas variáveis de ambiente não forem configuradas, o limite padrão de 1024 será usado para esvaziar e inflar.
- Ao contrário dos parâmetros DEFMINREQSIZE e INFMINREQSIZE que são usados em z14 ou sistemas anteriores, as variáveis de ambiente _HZC_DEFLATE_THRESHOLD e _HZC_INFLATE_THRESHOLD são específicas do aplicativo. Inclua as variáveis em seu arquivo /etc/.profile para que elas se apliquem em seu sistema ou configure-as para cada aplicativo no qual você deseja substituir o limite padrão do sistema para compactação de hardware.

- z14 e anterior
- Use os parâmetros DEFMINREQSIZE e INFMINREQSIZE do membro parmlib IQPPRMxx para controlar o limite para o uso do zEDC Para obter mais informações, consulte a seção IQPPRMxx na documentação para sua versão do z/OS, por exemplo: IQPPRMxx (parâmetros relacionados ao PCIE)..
Nota: No z15 ou processadores posteriores, o membro parmlib IQPPRMxx é permitido na configuração, mas os valores DEFMINREQSIZE e INFMINREQSIZE não são aceitos.
A seguir estão alguns métodos para determinar o
tamanho do buffer atual de um aplicativo:
- Opcional: z14 e anterior apenas: Configure a quantia de armazenamento que é alocada para buffers de E/S do z/OS .
As solicitações zEDC geradas pela biblioteca zlib usam buffer pools de E/S do z/OS predefinidos. Os buffer pools contêm várias áreas de armazenamento de 16 MB
chamadas
segmentos. É possível configurar o tamanho dos buffer pools usando o parâmetro
MAXSEGMENTS do membro parmlib IQPPRM
xx para especificar o número de
segmentos. O valor padrão é 4 (64 MB). Para obter mais informações, consulte a seção IQPPRMxx na documentação para sua versão do z/OS, por exemplo:
IQPPRMxx (parâmetros relacionados ao PCIE)..
Nota: No z15 ou processadores posteriores, esses buffers não são necessários. O membro parmlib IQPPRMxx ainda é permitido na configuração, mas os valores não são aceitos..
- Em seu aplicativo Java, use as classes e métodos no pacote java.util.zip para compactar e descompactar dados.
O exemplo a seguir (que exclui importações e blocos try/catch) usa a classe
GZIPOutputStream para ler dados de um arquivo e gravar dados compactados
em outro arquivo:
// 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
Se seu sistema atender aos requisitos e condições descritos, o zEDC será usado. Caso contrário, os serviços de compactação
baseados em software serão usados para compactação e descompactação de dados.
O quê fazer em seguida
É possível usar o comando D IQP para visualizar os valores atuais para os parâmetros do zEDC. Os exemplos a seguir mostram a saída de comando:
z15 ou posterior:RESPONSE=S5B
IQP066I 13.20.46 DISPLAY IQP 826
zEDC Information
DEFMINREQSIZE: 1K (STATIC)
INFMINREQSIZE: 1K (STATIC)
Feature Enablement: Enabled

z14 ou anterior: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