appl_memory - アプリケーション・メモリー構成パラメーター

appl_memory 構成パラメーターは、アプリケーション・メモリー・セットのサイズを指定します。 アプリケーション・メモリー・サイズは、有効になっている instance_memory 制限に影響を与えます。

以下のメモリー・プールの並行的な要件を満たすために、appl_memory の設定値を十分に大きくする必要があります。
  • アプリケーション・グループ共有ヒープ・メモリー・プール。 このメモリー・プールはすべてのアプリケーションのグローバル作業域であり、構成不可能です。
  • アプリケーション・ヒープ・メモリー・プール。 このメモリー・プールはアプリケーションごとに構成され、applheapsz 構成パラメーターを使って構成可能です。
  • ステートメント・ヒープ・メモリー・プール。 このメモリー・プールはステートメント・コンパイルごとに構成され、stmtheap 構成パラメーターを使って構成可能です。
  • 統計ヒープ・メモリー・プール。 このメモリー・プールは RUNSTATS 操作ごとに構成され、stat_heap_sz 構成パラメーターを使って構成可能です。
構成タイプ
データベース
適用
  • ローカルとリモート・クライアントを持つデータベース・サーバー
  • ローカル・クライアントを持つデータベース・サーバー
  • ローカル・クライアントおよびリモート・クライアントを持つパーティション・データベース・サーバー
パラメーター・タイプ
  • オンラインで構成可能 (データベース接続が必要)
  • Db2® pureScale® 環境およびパーティション・データベース環境のメンバーによって構成可能
デフォルト [範囲]
自動 [128 - 4 294 967 295]
  • 32 ビット・アーキテクチャーの場合、デフォルト値は AUTOMATIC、基礎となる値は 10000 です
  • 64 ビット・アーキテクチャーの場合、デフォルト値は AUTOMATIC、基礎となる値は 40000 です
単位
ページ (4 KB)
割り振りまたはコミットのタイミング
Linux および UNIX オペレーティング・システムの場合
データベースをアクティブ化したときに、初期サイズが割り振られます。 必要に応じて、さらにメモリーが割り振られます。
Windows オペレーティング・システムの場合
必要に応じてメモリーが割り振られます。 データベース・アクティブ化の時点で最小限のアプリケーション・メモリー量がコミットされます。 必要に応じて、さらにメモリーがコミットされます。
解放されるタイミング
アプリケーションを非アクティブ化したときに、すべてのデータベース・メモリーが解放されます。 ただし、割り振られたメモリーの部分とコミットされたメモリーの部分は、使用されなくなると、定期的に解放されてオペレーティング・システムに戻されます。

UNIX オペレーティング・システムでは、データベースの活動化中に初期アプリケーション・メモリー・サイズが割り振られた後、 Db2 は動的メモリー要件をサポートするために必要に応じて追加のメモリーを割り振ります。 追加のメモリー割り振りは、指定された固定サイズ制限に従います。 アプリケーション・メモリーはすべて共有メモリーとして割り振られ、データベースを非アクティブ化するまで保持されます。 割り振られる共有メモリーの合計は、仮想メモリー使用量だけに影響を与えます。 実メモリーによってこの仮想メモリーをバッキングする必要はありませんが、一部のオペレーティング・システムではスワップまたはページング・スペースによって仮想メモリーをバッキングする必要があります。 オペレーティング・システム・サポートについて詳しくは、「 オペレーティング・システム・サポート 」セクションを参照してください。

Windows オペレーティング・システムでは、アプリケーション・メモリーは専用メモリーとして割り振られます。 アプリケーション・メモリー割り振りは、指定された固定サイズの制限に従属します。 割り振られたメモリーが使用されなくなると、動的に解放されるか、再利用のために保持されます。 未解決のメモリー割り振りはすべて、データベースが非アクティブ化されたときに解放されます。

コミット済みのメモリーとは、オペレーティング・システムでバッキングされるメモリーのことです。 メモリー・プールでの必要に応じて、割り振られたメモリーがコミットされます。 コミット済みメモリーがメモリー・プールにとって必要でなくなった場合は、パフォーマンス改善のためにキャッシュに入れられるか、解放されてオペレーティング・システムに返されます。 また、アプリケーション・メモリー・サイズが動的に削減された場合にも、必要に応じてメモリーが解放またはコミット解除されます。 コミット済みのメモリーはすべて、データベースが非アクティブ化されたときに解放されます。

appl_memory をデフォルト設定の AUTOMATIC のままにすることをお勧めします。 アプリケーション・メモリーを不十分な固定値に設定した場合、結果として、さまざまなメモリー不足障害がアプリケーションに返されます。 メモリーの固定値を設定する場合には、その前に必ず詳細なテストを行ってピーク所要量を判別しておく必要があります。 アプリケーション・メモリーはセルフチューニング・メモリー・マネージャー (STMM) によってチューニングされませんが、STMM はアプリケーション・メモリー要件の変動に合わせて補正するために database_memory を調整します (database_memory のセルフチューニングが有効になっている場合)。

オペレーティング・システムのサポート

表 1. オペレーティング・システムのサポート
オペレーティング・システム 使用可能なサポート
AIX デフォルトでは、パフォーマンス上の利点があるミディアム (64K) ページを使用します。 また、AIX でのみラージ・ページ (16MB) が可能です。1
Linux 割り振られた共有メモリーは、仮想共有メモリー制限 (shmall) にカウントされます。
Windows Windows プラットフォームでは追加の考慮事項はありません。
注:
  1. ラージ・ページ (DB2_LARGE_PAGE_MEM) を使用すると、メモリーを動的に解放する Db2 の機能が制限されます。 ラージ・ページ・メモリーを使用する場合は、固定 appl_memory 値を構成することをお勧めします。

モニター

アプリケーション・メモリー・セットは、 MON_GET_MEMORY_SET ルーチンおよび MON_GET_MEMORY_POOL ルーチンを介してモニターできます。 例えば、下記のコマンドを行ったとします。
db2 "select member, substr(db_name,1,10)as db_name, substr(memory_set_type,1,10) as set_type, 
memory_set_size, memory_set_committed, memory_set_used, memory_set_used_hwm 
from table(mon_get_memory_set('APPLICATION')"
以下の情報が戻されます。
MEMBER DB_NAME    SET_TYPE    MEMORY_SET_SIZE      MEMORY_SET_COMMITTED MEMORY_SET_USED      MEMORY_SET_USED_HWM 
------ ---------- ----------  -------------------- -------------------- -------------------- -------------------- 
     0 SAMPLE     APPLICATION               154927                68616                67829                68616 
     0 TEST       APPLICATION               238092               123404               123404               123404 

  2 record(s) selected. 

この場合、アプリケーション・メモリー・セットは、 instance_memory(MEMORY_SET_SIZE) の 154927KB と system memory (MEMORY_SET_COMMITTED)の 68616KB を使用しています。 このうち 67829KB (MEMORY_SET_USED) がメモリー・プールに割り当てられています。

以下のように db2pd ユーティリティーを使用してデータベース・メモリーをモニターすることもできます。
 db2pd -db <database_name> -memsets -mempools, db2pd -dbptnmem