CF セルフチューニング・メモリー・パラメーター構成

インスタンスでは Db2 pureScale® インスタンスでは、いくつかの設定パラメータとレジストリ変数が連携して、 CFとしても知られるクラスタ・キャッシング機能のメモリ割り当てを制御します。

Db2 10.5.0.5 およびそれ以降の バージョン 10.5のフィックスパックでは、明示的に有効にすると、 クラスター・キャッシング・ファシリティー (CF) セルフチューニング・メモリーによってメモリー分散が最適化され、メモリー不足状態が回避されます。 明示的に有効になっていない場合、CF メモリー・パラメーター構成は、従来どおり機能します。

バージョン 11.5では、(CF) 自己転換メモリーはデフォルトで有効になっています。

Db2 pureScale インスタンスでは、CF セルフチューニング・メモリーは、メモリーの使用量を自動的かつ継続的にモニターし、メモリーの分散を最適化します。 CF セルフチューニング・メモリーは、データベース・メモリー・パラメーター cf_db_mem_sz と以下の CF メモリー・コンシューマー・パラメーターをモニタリングします。
  • グループ・バッファー・プール (cf_gbp_sz)、
  • ロック・マネージャー (cf_lock_sz)、
  • 共用通信域 (cf_sca_sz)。

CF メモリーは、これらの CF メモリー・コンシューマー・パラメーター間で動的に分配されます。 さらに、複数データベース環境では、メモリーの必要に基づいてデータベース間で CF メモリーを動的に分配することができます。

CF セルフチューニング・メモリーは、インスタンス・レベルで設定され、デフォルトで、またはレジストリー変数 DB2_DATABASE_CF_MEMORYAUTOに設定することによって有効になります (つまり、オンになります)。
db2set DB2_DATABASE_CF_MEMORY=AUTO 
DB2_DATABASE_CF_MEMORYAUTO に設定すると、CF メモリー・コンシューマー・パラメーター (cf_gbp_szcf_lock_szcf_sca_sz) が AUTOMATIC に設定されているすべてのデータベースの CF セルフチューニング・メモリーがオンになります。 しかし、CF メモリー・コンシューマー・パラメーターが固定値に設定されているデータベースでは、CF セルフチューニング・メモリーはオフのままになります。
注:
  1. Db2 10.5.0.5 以降のフィックスパックでは、オンライン・フィックスパックを適用する場合、インスタンスが新しいフィックスパック・レベルにコミットされるまでレジストリー変数 DB2_DATABASE_CF_MEMORY を設定できません。
  2. Db2 pureScale 環境 の高可用性災害時リカバリー (HADR) では、CF セルフチューニング・メモリーを使用できます。 ただし、CF メモリー・チューニングは、1 次サイトでのみ行われます。 このレジストリー変数がスタンバイ・サイトで設定された場合、レジストリー変数はスタンバイ・サイトが 1 次サイトになったときに有効になります。
CF セルフチューニング・メモリーはさまざまなレベルで使用できます。
  • データベースに割り当てる CF メモリーの量を動的に調整する場合は、cf_db_mem_szAUTOMATIC に設定します。

    この場合、ワークロードに応じて、同じく cf_db_mem_szAUTOMATIC に設定しているすべてのデータベース間で CF メモリーを使用できるようになりますが、データベース・メモリーは 1 つのデータベース内でのみ使用できます。

    また、データベース・メモリーは、CF メモリー・コンシューマー・パラメーター (cf_gbp_szcf_lock_szcf_sca_sz) の間で動的に配分されます。

  • データベースの CF メモリーをメモリー・コンシューマー・パラメーターの間で動的に配分する場合は、cf_db_mem_sz を固定値に設定します。

    この場合、データベース間ではメモリーが動的に配分されることはありませんが、CF メモリー・コンシューマー・パラメーター (cf_gbp_szcf_lock_szcf_sca_sz) の間ではメモリーが動的に配分されます。

複数のデータベースがある場合、すべてのデータベースで CF セルフチューニング・メモリーを使用することが最善ですが、インスタンス内のデータベースのサブセットのみが CF セルフチューニング・メモリーを使用するようにすることもできます。 つまり、1 つ以上のデータベースで cf_db_mem_sz を固定値に設定するということです。 固定値を使用する場合、データベースに同じ固定値を設定する必要はありません。 また、このときに、空き CF メモリーが不足する事態を回避には、データベースを活動化する順序が重要です。 最初に、固定値のデータベースから活動化してください。

Db2 10.5.0.5より前は、データベース・メモリー・パラメーター cf_db_mem_sz の値は静的でした。 Db2 10.5.0.5 以降のフィックスパックでは、 cf_db_mem_szAUTOMATICに設定されている場合、CF セルフチューニング・メモリーは、データベース・マネージャー構成パラメーター numdbに基づいて最大 CF データベース・メモリーを制限します。 予想されるアクティブ・データベースの数にできるだけ近い値に numdb を設定してください。 例えば、単一データベース環境の場合、numdb の値によって、単一データベースで使用される CF メモリーの量が決まります。 numdb1 に設定される場合、単一データベースですべての CF メモリーが使用されます。 しかし、numdb を 1 より大きい値に設定すると、その単一データベースにおいて少量のメモリーが使用できなくなります。

複数のデータベース環境では、CF メモリーはワークロードと使用可能メモリーに基づいて自動的に構成されます。 新規データベースがアクティブになると、既にアクティブになっているデータベースは、新たにアクティブになったデータベースのために、CF メモリーのワークロード・ベースの分配量に到達するまで CF メモリーを自動的に解放します。

CF セルフチューニング・メモリーは、データベースを初めてアクティブにするときに、データベースの初期開始サイズを計算します。 これが新規作成のデータベースである場合、初期開始サイズは、そのデータベースに対して計算されます。 新規データベースの場合、開始サイズは以下に基づいて計算されます。
  • numdb 構成パラメーターで指定されている、同時にアクティブになるデータベースの最大数。
  • CF メモリー構成パラメーター cf_mem_sz
これが既存のデータベースである場合、開始サイズは、最後に構成した値に基づきます。

CF セルフチューニング操作による変更は、db2dump/stmmlog ディレクトリーにあるメモリー・チューニング・ログ・ファイルに記録されます。 ログは、CF メモリー・コンシューマー・パラメーターのサイズなど、役立つ診断情報を提供します。

cf_db_mem_szAUTOMATIC に設定すると、CF セルフチューニング・メモリーは、データベースが CF メモリーの妥当な量を使用するようにしながら、CF メモリー・コンシューマー・パラメーターの設定値を使用してデータベースをアクティブ化しようとします。 CF セルフチューニング・メモリーは、メモリー・コンシューマー・パラメーターをモニターし、新しい値を決定し、影響を受ける構成パラメーターのサイズを動的に変更します。 手操作による介入は必要ありません。 変化する CF メモリーの必要を満たすうえで、このような小さいながらも頻繁に発生する変更が必要になります。 複数のデータベースが存在し、CF メモリーの競合が発生した場合、CF セルフチューニング・メモリーは、アクティブ・データベースのワークロード・ベースの分配量に対して変更を加えます。

cf_db_mem_sz を固定値に設定した場合は、データベースが CF メモリーから取得できるメモリー量を指定することになります。 CF セルフチューニング・メモリーは、このデータベース・メモリー・パラメーターによって制限される CF メモリー内で機能します。

CF メモリー構成パラメーターの実際の値を確認するには、GET DB CFG SHOW DETAIL コマンドを実行します。 以下に例を示します。
       Database Configuration for Database

 Description                                   Parameter   Current Value              Delayed Value
 ------------------------------------------------------------------------------------------------------
...
 CF Resource Configuration:

 CF self-tuning memory                                   = ON 
 CF database memory size (4KB)            (CF_DB_MEM_SZ) = AUTOMATIC(8383744)         AUTOMATIC(8383744)
 Group buffer pool size (4KB)                (CF_GBP_SZ) = AUTOMATIC(6589696)         AUTOMATIC(6589696)
 Global lock memory size (4KB)              (CF_LOCK_SZ) = AUTOMATIC(1257728)         AUTOMATIC(1257728)
 Shared communication area size (4KB)        (CF_SCA_SZ) = AUTOMATIC(135245)          AUTOMATIC(135245)
 Smart array size (4KB)                     (CF_LIST_SZ) = AUTOMATIC(315571)          AUTOMATIC(315571)
この表では、パラメーターの組み合わせを要約します。
表 1. パラメーターの組み合わせ
CF メモリー・コンシューマー・パラメーター
(cf_gbp_sz, cf_lock_sz, cf_sca_sz)
CF データベース・メモリー・パラメーター
cf_db_mem_sz
CF セルフチューニング・メモリー
(オンまたはオフ)
自動 (Automatic) 自動 (Automatic) データベースに対して ON を維持または設定します。

cf_db_mem_sz と 3 つのメモリー・コンシューマー・パラメーターがチューニングされます。

自動 (Automatic) 固定値 データベースに対して ON を維持または設定します。

cf_db_mem_sz はチューニングされません。

3 つのメモリー・コンシューマー・パラメーターが調整されます。
固定値 固定値 データベースに対してオフにします。

このデータベースに CF セルフチューニング・メモリーはありません。

レジストリー変数 DB2_DATABASE_CF_MEMORYAUTO から数値に変更して明示的に無効にすると、アクティブになっているすべてのデータベースの CF メモリー・チューニングがオフになります。 しかし、それらのデータベースにおいて、データベースおよび CF メモリー・コンシューマー・パラメーターによる CF メモリーの使用量は、すぐには調整されません。 現行の CF メモリー・サイズは、現行レベルで残ります。 データベース・マネージャーを再始動する必要があります。

cf_db_mem_szAUTOMATIC に設定されている複数データベース環境での CF セルフチューニング・メモリー

データベース・マネージャー構成パラメーター numdb が 2 (以上) に設定されている 1 つのデータベースだけの環境で実行している場合に、CF セルフチューニング・メモリーをオンにすると、そのデータベースがほとんどすべての CF メモリーを使用できるようになります。 (一部のメモリーは追加のデータベース活動化のために予約されています)。 後からもう 1 つデータベースが追加されてそのデータベースが開始されると、既にアクティブになっているデータベースは、新たにアクティブになったデータベースのために、必要が満たされるまで、または CF メモリーのワークロード・ベースの分配量に到達するまで CF メモリーを自動的に解放します。

以下に例を示します。
  • DB2_DATABASE_CF_MEMORYAUTO に設定します。
  • numdb3 に設定します。これは、インスタンス内のアクティブ・データベースの最大数が 3 であるという意味です。
  • cf_db_mem_szAUTOMATIC に設定します。
  • CF メモリー・コンシューマー・パラメーター (cf_gbp_szcf_lock_szcf_sca_sz のいずれか) を AUTOMATIC に設定します。
最初のデータベースがアクティブになると、アクティブになるデータベースは 1 つだけなので、そのデータベースは、ほぼすべての CF メモリーを使用できます。 後からもう 1 つデータベースがアクティブになると、2 つのデータベースが CF メモリーを動的に分配することになります。 (この場合も、一部のメモリーは追加のデータベース活動化のために予約されています)。 もう 1 つデータベースがアクティブになると、すべての CF メモリーをデータベースで使用できるようになります。numdb 値 (3) が既に満たされているので追加のデータベース活動化のために予約されているメモリーがなくなったからです。

さらに、この場合、データベースは CF メモリーの必要性に基づいてメモリーを動的に分散させることができます。 その結果、メモリーが必要性の低いデータベースから必要性の高いデータベースに移動されます。 すべてのデータベースで CF メモリーの需要が等しい場合、各データベースに CF インスタンス・メモリーの 3 分の 1 のシェアが割り当てられます。

cf_db_mem_sz が固定値に設定され、メモリー・コンシューマー・パラメーターが AUTOMATIC に設定されている複数データベース環境の CF セルフチューニング・メモリー

2 つのデータベースで構成される環境で実行している場合に、CF セルフチューニング・メモリーをオンにすると、各データベースは、固定値によって指定された CF メモリーのパーセンテージを消費します。

以下に例を示します。
  • DB2_DATABASE_CF_MEMORYAUTO に設定します。
  • numdb2 に設定します。これは、インスタンス内のアクティブ・データベースの最大数が 2 であるという意味です。
  • cf_db_mem_sz を固定値に設定します。
    • 最初のデータベースで、cf_db_mem_szcf_mem_sz の 70% の固定値に設定します。
    • 2 番目のデータベースで、cf_db_mem_szcf_mem_sz の 30% の固定値に設定します。
  • CF メモリー・コンシューマー・パラメーター (cf_gbp_szcf_lock_szcf_sca_sz のいずれか) を AUTOMATIC に設定します。
最初のデータベースがアクティブになると、CF メモリーの 70% が消費されます。 その後、2 番目のデータベースがアクティブになると、CF メモリーの 30% が消費されます。 2 つのデータベースは、相互にメモリーの交換を行いません。 しかし、各データベースで、その CF メモリーは、データベースと関連付けられている CF メモリー・コンシューマー・パラメーター (cf_gbp_szcf_lock_sz、または cf_sca_sz) 間で動的に分配されます。