変更の始め

ネスト・アクセラレーター

POWER9™ プロセッサー・ベース・サーバーは、さまざまな機能 (データの圧縮、圧縮解除、暗号化、復号など) を実行するオンチップ・アクセラレーターをサポートしています。 このアクセラレーターは、GZIP 圧縮操作や GZIP 圧縮解除操作といった GZIP 機能を実装できます。

AIX 論理区画におけるアプリケーションは、zlib インターフェースを使用することによって GZIP アクセラレーターにアクセスできます。 IBM® AIX® 7.2 (テクノロジー・レベル 4 適用) 以降、アプリケーションは、zlibNX ライブラリーを使用して GZIP アクセラレーターにアクセスできます。 環境変数および GZIP アクセラレーターの可用性に基づいて、zlibNX ライブラリーは、ハードウェア加速圧縮機能とハードウェア加速圧縮解除機能を使用します (該当する場合)。

ハードウェア・アクセラレーターは、複数の論理区画の間で共有されます。 そのため、割り振られている数を超えるアクセラレーターを論理区画が使用できないようにするためには、フロー制御メカニズムが必要です。 このフロー制御メカニズムは、クレジット と呼ばれる割り振り単位に基づいています。 クレジットは論理区画ごとに割り振られます。 zlibNX ライブラリーがアプリケーションのために GZIP アクセラレーターにアクセス要求を送信できるようにするには、その zlibNX ライブラリーで、GZIP アクセラレーターとの通信チャネル がオープンされている必要があります。 GZIP アクセラレーターとの通信チャネルをオープンするには、使用可能なクレジットが必要です。 そうではない場合、要求は失敗します。

通信チャネル上のアクセラレーター要求は、関連するクレジットを使用します。アクセラレーター操作が完了したとき、クレジットは復元されます。 そのため、1 つの通信チャネルで一度にアクティブにできる操作は 1 つだけです。

それぞれの論理区画に、以下のタイプのクレジットが割り振られています。
  • それぞれの論理区画は、その論理区画の CPU 資格に基づいて、いくつかのデフォルト・クレジット を持っています。

    通信チャネルでデフォルト・クレジットが使用される場合、アクセラレーター要求が正常に行われるかどうかは確実ではありません。 アクセラレーターによって現在処理されている要求の総数に基づいて、アクセラレーター要求は失敗することがあります。その場合は、後で再サブミットしなければなりません。

  • デフォルト・クレジットに加えて、システム管理者は、いくつかのサービスの品質 (QoS) クレジット を割り振ることができます。

    通信チャネルで QoS クレジットが使用されている場合、その通信チャネルで他の要求が進行中でなければ、アクセラレーターは常にアクセラレーター要求を処理します。

GZIP アクセラレーターとのプロトコルの管理 (通信チャネルのオープン、アクセラレーター要求の生成および送信、通信チャネルのクローズなど) は、アプリケーションからの inflate 要求または deflate 要求に基づいて、zlib インターフェースによって処理されます。

新しいサブルーチンによって、特権アプリケーションは呼び出しプロセス専用のものとして QoS クレジットを予約でき、それらの予約済みクレジットを必要でなくなったときに解放できます。 これらの予約済みクレジットは、通信チャネルをオープンし、アクセラレーター要求を GZIP アクセラレーター・ユニットに送信するために、zlib インターフェースによって使用されます。 同時に処理できるアクセラレーター要求の数は、予約済みクレジットの数によって制御されます。 デフォルト・クレジットを、専用のものとして予約することはできません。

予約済み QoS クレジットがない他のアプリケーションでは、zlib インターフェースは、要求時に使用可能な以下のクレジットのどちらかを使用します。
  • 予約されていない共有 QoS クレジット (使用できる場合)
  • デフォルト・クレジット (使用できる場合)

使用可能なクレジットがない場合、アクセラレーター要求は、ハードウェア・アクセラレーションなしでソフトウェアによって完全に処理されます。

ファイルの圧縮および圧縮解除のために zlib インターフェースを使用するアプリケーションの多くは、その他のインターフェースを必要としません。 ハードウェア・アクセラレーターが使用可能であれば、zlib インターフェースは自動的にハードウェア・アクセラレーターを使用します。 以下のサブルーチンは、特定のレベルのサービスを必要とする (そのため、専用の GZIP クレジットを予約する必要がある) 特権アプリケーションの制限付きセットによってのみ使用されます。
アプリケーション・レベルの定義、構造、および関数プロトタイプは、<sys/nx.h> ヘッダー・ファイルに記述されています。 NX フレームワークは以下のマクロを使用します。
power_nx_gzip()
論理区画に GZIP アクセラレーターへのアクセス権限がある場合は 1 を返し、そうではない場合は 0 を返します。このマクロは <sys/systemcfg.h> ヘッダー・ファイルに定義されています。
nx_gzip_gen_count()
GZIP アクセラレーターの構成データの現行世代カウントを返します。 GZIP アクセラレーターが使用可能ではないか、または構成されていない場合、0 を返します。 このマクロは、<sys/nx.h> ヘッダー・ファイルに定義されています。

世代カウントは、アプリケーションに使用可能なクレジットの数が操作によって変わるたびに増えていきます。 例えば、特権アプリケーションが QoS クレジットを予約または解放した場合、あるいは論理区画において QoS クレジットが動的に追加または削除された場合がこれに該当します。 世代カウントが変更されると、使用可能なクレジットの数をトラッキングしているアプリケーションでは、nx_config_query サブルーチンが呼び出されてその構成データがリフレッシュされます。

現在、アプリケーションがアクセスできるのは GZIP アクセラレーターだけです。 ただし、新しいサブルーチンはアクセラレーター・タイプを引数として使用して、このインターフェースを将来的に他のアクセラレーター・タイプに拡張します。

変更の終わり