記事
· 2021年6月9日 8m read

管理ポータルのメモリ関連設定項目について

これは InterSystems FAQ サイトの記事です。

管理ポータルで設定できるメモリ関連の項目は、以下の通りです。
(項目としては他にもありますが、ここでは、ほとんど設定する必要のないものについては記載していません。)

管理ポータル [ホーム] > [システム管理] > [構成] > [システム構成] > [メモリと開始設定]

古いバージョンのメニューは以下の通りです。

【バージョン5.1~2010.x】
システム管理ポータル [ホーム] > [構成] > [メモリと開始設定] の設定内容
* データベースキャッシュ用メモリ
* ルーチンキャッシュ用メモリ 【バージョン2011.1.0~】
管理ポータル [ホーム] > [システム管理] > [構成] > [追加の設定] > [メモリ詳細設定]

 

【バージョン 5.1~2010.x】
システム管理ポータル [ホーム] > [構成] > [メモリ詳細設定] の設定内容
* 一般メモリヒープ【gmheap】
* ロックテーブル【locksiz】
* IJCバッファ【ijcbuff】
* IJCデバイス【ijcnum】※カテゴリ:IO
* 照合テーブル最大数【nlstab】

設定の詳細は以下の通りです。

2023/9/1更新 添付のPDFに古い記載がありましたので、本文内を最新情報に更新しています。添付ではなく本文をご参照ください。


 

管理ポータル:メモリと開始設定 設定内容

管理ポータルのメニューは以下の通りです。 

 [システム管理] > [構成] > [システム構成] > [メモリを開始設定]

【~Caché2010.2】 [構成] > [メモリと開始設定]

 

(1) データベースキャッシュ用メモリ

この項目はMB単位で指定する項目です。メモリは、自動的に構成するか手動で構成するか選択できます。

[手動] を選択した場合、データベース・ブロックに割り当てるグローバル・バッファ・プール・メモリのサイズを指定できます。 

なお、データベース・ブロックは規定では 8KB のみが有効になっています。他のブロックサイズを利用したい場合は、事前に下設定項目を修正します。 

 [システム管理] > [構成] > [追加の設定] > [開始] > DBSizesAllowed

 【Caché2008.2.x~2010.2】[構成] > [開始設定] > DBSizesAllowed

規定(8KB)以外の他のブロックサイズを有効とした場合は、システムで使用するデータベース・ブロックに対してメモリを割り当てる必要があります。

[自動] が既定値となります。デフォルトの[自動]設定の場合、アプリケーションにとって不適切な値となる場合もあるため、[手動]に設定変更いただくことを推奨しています。

ご参考:自動取得の場合のサイズ一覧

バージョン

取得サイズ

最小

最大

2020.3以降

物理メモリの25%の値

32MB

16TB

2020.3より前

物理メモリの12.5%の値

なし

1GB

 

設定値の最適な値はアプリケーションで使用する全てのグローバルの合計サイズで、理論上、全てのデータをキャッシュにのせることができます。これによりグローバル参照に伴う物理ディスク I/O数を最小限に抑えることが可能です。

手動設定の場合、この値の適正値の決定には、アプリケーション実行中に管理ポータルの「システム使用」または、システムルーチンGLOSTAT  による統計データの収集を繰り返し行いながら、統計データの「キャッシュ効率(Cache Efficiency)」の値を利用して決定します。

キャッシュ効率(Cache Efficiency)の値はディスクへの物理I/Oと論理I/O(キャッシュから取得)の比で、ここの数値が大きいほどキャッシュヒット率が高い状態です。

この値が常時100を下回る、または正常時のキャッシュ効率よりも大幅に減少している場合は、本値を増加させることを検討してください。

システムルーチンGLOSTATの使用方法詳細は、下記ドキュメントページをご参照ください。

GLOSTATについて【IRIS】GLOSTATについて

システムルーチンGLOSTATはインタラクティブツールであるため、実行時に指定秒数間のキャッシュ効率を確認するツールとして最適です。バックグラウンドで情報収集を繰り返し実行する場合は、mgstatルーチンが最適です。詳しくはドキュメントをご参照ください。

^mgstat を使用したパフォーマンスの監視【IRIS】/ ^mgstat を使用したパフォーマンスの監視

 

(2) ルーチンキャッシュ用メモリ

ルーチンキャッシュの総サイズをMB単位で指定します。

3種類 のサイズ(4KB、16KB、64KB)のバッファプールにてルーチンキャッシュが構成されます。

ルーチンキャッシュ全体の 1/2 が 64KB 、3/8 が 16KB 、1/8 が 4KB のバッファに割り当てられ、それぞれのプールに割り当てるバッファ数は 300~65,529になります。(これにより、ルーチンバッファのサイズを設定する RoutineBufSize は廃止されました。)

ルーチンがルーチンキャッシュに読み込まれる際に、個々のルーチンのサイズに適切なサイズのバッファが割り当てられます。

ルーチンキャッシュの総サイズの適正値の決定には、アプリケーションの実行中に管理ポータルの「システム使用」による(または、システムルーチンGLOSTATによる)統計データの参照を繰り返す必要があります。 

管理ポータルの「システム使用」およびシステムルーチンGLOSTATでルーチンバッファの読み込みと保存(Routine buffer loads and saves)の値をモニターします。

この値はルーチンの読み出しが物理ディスクI/Oを伴う場合にカウントされます。通常、起動直後しばらくはこの値が増加し続けますがルーチンキャッシュが十分に確保されている環境では、この値はいずれ収束します(0が理想値です)。

 

メモリ詳細設定

管理ポータルのメニューは以下の通りです。 

[システム管理] > [構成] > [追加の設定] > [メモリ詳細]

【Caché2008.2~Caché2010.2】 [構成] > [メモリと詳細設定]

【~Caché2008.1】 [構成] > [詳細設定] > カテゴリ:Memory

 

(1) 一般メモリヒープ:gmheap

管理メモリ領域をKB単位で指定します。本領域には下記の情報が含まれます。(以下の領域を増加する場合には、合わせてgmheapの領域も増加する必要があります。)

  • プロセステーブル(動的に拡張) InterSystems製品で使用するプロセスの情報を格納したテーブル
  • ロックテーブル (管理ポータルで変更可能)
  • NLSテーブル
  • など

詳細はドキュメントをご参照ください。

一般(共有)メモリ・ヒープ使用状況Caché/Ensemble:一般(共有)メモリ・ヒープ使用状況

 

(2) ロックテーブル:locksiz

インスタンス全体で使用出来るロックの総量をバイト単位で指定します。

アプリケーションがLockを取得する度にこの領域が消費されます。

個々の消費量は可変長です。下記の処理により空き容量を知ることができます。ロック実行前と実行後で下記の処理を実施することにより、おおよその消費量を推定することができます。

実行例は、以下の通りです。

%SYS>set size=##Class(SYS.Lock).GetLockSpaceInfo() write $Piece(size,",",3)
1172400
%SYS>lock +^a(1)
%SYS>set size=##Class(SYS.Lock).GetLockSpaceInfo() write $Piece(size,",",3)
1172800   //消費量は1172800-1172400=400(byte)
%SYS>lock
%SYS>set size=##Class(SYS.Lock).GetLockSpaceInfo() write $Piece(size,",",3)
1172400

ロックテーブルの空きが不足すると、新たなLockコマンドは空きができるまで待たされます。この場合、タイムアウト付きのLockはタイムアウトします。

 【Caché2008.2~2010.2】 [構成] > メモリ詳細設定 > locksiz

 

(3) IJCバッファ:ijcbuff 

ジョブ間通信で使用できる個々のバッファのサイズをバイトで指定します。

アプリケーションでOpenコマンドの Open 224 などの機能を使用していない場合は、デフォルト設定で問題ありません。

詳細は下記ドキュメントをご参照ください。

プロセス間通信について【IRIS】/ プロセス間通信について

【Caché2008.2~2010.2】 [構成] > メモリ詳細設定 > ijcbuff

 

(4) IJCデバイス:ijcnum

ジョブ間通信で使用できるデバイスの個数を指定します。

アプリケーションでOpenコマンドの Open 224 などの機能を使用していない場合は、デフォルト設定で問題ありません。

詳細は下記ドキュメントをご参照ください。

プロセス間通信について【IRIS】/ プロセス間通信について

【Caché2008.2~2010.2】 [構成] > メモリ詳細設定 > ijcnum

 

(5) 照合テーブル最大数:nlstab 

インスタンスが保持可能な照合(collation)テーブルの最大数を指定します。

通常デフォルト値で十分です。

本項目は、照合テーブルへのポインタを保持するだけで、実際に照合テーブルがロードされるかどうかは、NLSのロケール設定に従います。

日本語環境ではデフォルトで照合テーブルは最大1つ(Japanese1)しかロードされません。

【Caché2008.2~2010.2】 [構成] > メモリ詳細設定 > nlstab

 


関連記事/FAQトピック

ディスカッション (0)1
続けるにはログインするか新規登録を行ってください