zEnterprise データ圧縮 (z/OS のみ)

zEnterprise® Data Compression (zEDC) は、一部の z/OS® システムでデータ圧縮の速度を上げることができるハードウェアおよびソフトウェアの圧縮アクセラレーション・ソリューションです。 アプリケーションが Java™ 圧縮サービスを広範囲にわたって使用する場合、 zEDC は CPU 使用量を削減し、処理時間を短縮することができます。

開始前に

以下のいずれかのハードウェア・システムが必要です。 IBM® zEnterprise zEC12 GA2、 zBC12、 z13® 以降。 その他の要件は、ご使用のハードウェア・システムによって異なります。サービス・リフレッシュ 6 の変更点の始まり
z15® 以降
ご使用の z/OSのレベルに応じて、以下のいずれかの PTF を適用します。
  • z/OS 2.4: UJ00636
  • z/OS 2.3: UJ00635
  • z/OS 2.2: UJ00638
z/OS 2.5の場合、追加の PTF を適用する必要はありません。 z15 以降のシステムでは、ハードウェア要件はありません。 これらのシステムにおける Integrated Accelerator for zEDC ソリューションは組み込みデータ・アクセラレーションを提供するため、別のアダプターは必要ありません。
サービス更新6の変更点の終わり
z14 以前
ご使用のシステムに以下の要件が必要です。
  • ハードウェア・システムのPCIe I/OドロワーにインストールされるzEDCExpressアダプタ。
  • zEDC ソフトウェア機能 (有料のオプション機能) が IFAPRDxx parmlib メンバーで使用可能になっていなければならない。
要件の最新リストについては、ご使用のバージョンの z/OSの資料 (例: Requirements for zEnterprise Data Compression) を参照してください。

このタスクについて

zEDC は、 DEFLATE 圧縮フォーマットをサポートします。 これは標準形式であるため、圧縮または圧縮解除されたデータを IBM Z®以外のシステムに転送して、圧縮解除または圧縮することができます。

zEDC は、 java.util.zip パッケージ内の IBM zlib ライブラリーによって提供されます。 zEDC,の詳細については、z/OSのバージョンのドキュメント(zEnterpriseData Compression(zEDC)など)を参照してください。

手順

  1. z14 以前のみ: FPZ.ACCELERATOR.COMPRESSION リソース・クラスを、Java アプリケーションを実行するユーザー ID に。
    このリソース・クラスは System Authorization Facility (SAF) の FACILITY リソース・クラスであり、zEDC コプロセッサーに対するアクセスを調整します。 この要件は、z15 以降のプロセッサーには適用されません。
  2. z/OS UNIX 環境変数 _HZC_COMPRESSION_METHOD を使用して、 zEDC を使用するかどうかを制御します。
    デフォルトでは zEDC が使用されます。 この変数をsoftwareに設定すると、代わりにソフトウェア・ベースの圧縮サービスが使用されます。 それ以外の値に設定した場合は、zEDC が使用されます。
  3. Java アプリケーションの z/OS 入力バッファーが十分に大きいことを確認してください。
    圧縮または圧縮解除のために zEDC 機能にデータを送信するには、多少の CPU リソースが必要です。 データが少量の場合、このリソース・コストは、zEDC を使用することで達成される節約量を上回ることがあります。 zEDC によって圧縮および圧縮解除されるデータのしきい値を設定することができます。データのサイズが関連しきい値を下回る場合は、代わりに zlib ソフトウェア圧縮が使用されます。
    サービス・リフレッシュ 6 の変更点の始まり
    z15 以降
    オプションで zEDC 使用量のしきい値を調整するには、環境変数 _HZC_DEFLATE_THRESHOLD および _HZC_INFLATE_THRESHOLD を使用します。 有効な値 (バイト単位) は、1 から 9999999 の範囲です。 たとえば、_HZC_DEFLATE_THRESHOLD=1は初期入力サイズが1バイト以上のすべてのdeflate要求にzEDCを使用するように強制します。 これらの環境変数が設定されていない場合、デフォルトのしきい値である 1024 が deflate と inflate の両方に使用されます。
    z14 以前のシステムで使用される DEFMINREQSIZE および INFMINREQSIZE パラメーターとは異なり、_HZC_DEFLATE_THRESHOLD および _HZC_INFLATE_THRESHOLD 環境変数はアプリケーション固有のものです。 変数を /etc/.profile ファイルに追加してシステム全体に適用するか、ハードウェア圧縮のシステム・デフォルトしきい値をオーバーライドするアプリケーションごとに変数を設定します。
    サービス更新6の変更点の終わり
    z14 以前
    IQPPRMxx parmlib メンバーのパラメーター DEFMINREQSIZE および INFMINREQSIZE を使用して、zEDC 使用のしきい値を制御します。 詳しくは、ご使用のバージョンの z/OSの資料の IQPPRMxx セクション (例: IQPPRMxx (PCIE 関連パラメーター)) を参照してください。

    注: z15 以降のプロセッサーでは、IQPPRMxx parmlib メンバーは構成で許可されていますが、DEFMINREQSIZE および INFMINREQSIZE の値は受け入れられません。

    以下に示すのは、アプリケーションの現在のバッファー・サイズを判別するためのいくつかの方法です。
  4. オプション: z14 以前のみ: z/OS 入出力バッファーに割り振られるストレージの量を設定します。
    zlib ライブラリーによって生成される zEDC 要求は、事前定義された z/OS 入出力バッファー・プールを使用します。 バッファー・プールには、セグメント と呼ばれる 16 MB ストレージ域が複数含まれています。 IQPPRMxx parmlib メンバーの MAXSEGMENTS パラメーターを使用してセグメント数を指定すれば、バッファー・プールのサイズを設定できます。 デフォルト値は 4 (64 MB) です。 詳しくは、ご使用のバージョンの z/OSの資料の IQPPRMxx セクション (例: IQPPRMxx (PCIE 関連パラメーター)) を参照してください。

    注: z15 以降のプロセッサーでは、これらのバッファーは必要ありません。 IQPPRMxx parmlib メンバーは構成で許可されていますが、値は受け入れられません。

  5. Java アプリケーションで、 java.util.zip パッケージ内のクラスおよびメソッドを使用して、データを圧縮および圧縮解除します。
    以下の例 (import および try/catch ブロックは除外されています) では、あるファイルからデータを読み取り別のファイルに圧縮データを書き込むために GZIPOutputStream クラスが使用されています。
    // 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);
        }
    }

結果

ご使用のシステムが説明されている要件と条件を満たしている場合、zEDC が使用されます。 そうでない場合、データ圧縮および圧縮解除には、ソフトウェア・ベースの圧縮サービスが使用されます。

次のタスク

D IQP コマンドを使用すれば、zEDC の各パラメーターの現在の値を表示できます。 コマンド出力を以下に例示します。
サービス・リフレッシュ 6 の変更点の始まりz15 以降:
RESPONSE=S5B                                       
 IQP066I 13.20.46 DISPLAY IQP 826                 
 zEDC Information                                 
  DEFMINREQSIZE:               1K (STATIC)          
  INFMINREQSIZE:               1K (STATIC)         
  Feature Enablement:    Enabled 
サービス更新6の変更点の終わり
z14 以前:
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