記事
· 2023年4月3日 3m read

現在の一般メモリヒープ(gmheap)と取得可能なロックテーブル(locksiz)最大サイズについて

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


データ取込み処理の性能・エラー(Lock Table Full)対策として、一般メモリヒープ(gmheap)や ロックテーブルサイズ(locksiz)のパラメータチューニングを行う場合があると思います。

実際に、現在どのくらいの一般メモリヒープが確保できているのかは、ターミナルと管理ポータルで確認することができます。


★ターミナルの場合

// 一般メモリヒープサマリ
USER>w $system.Config.SharedMemoryHeap.GetUsageSummary()
4992226,6029312,59441152

一般メモリヒープサマリは、使用量,アロケート量,構成量(bytes) で戻り値が表示されます。

使用量は、アロケートされたロックテーブルやプロセステーブルなどで実際に使用されている量になります。
アロケート量は、gmheapの領域でロックテーブルやプロセステーブルなどでアロケートされている量になります。
構成量は、gmheap(KB) +IRISシステム追加領域 で、これが現在の最大利用可能な量(実際の一般メモリヒープの領域の値)になります。
 

上で述べたように、構成量は構成パラメータの gmheap の単体の値と一致していません。
これは、IRISが自動で 構成パラメータ gmheap に内部で使用するメモリ領域分を付加して、一般メモリヒープの領域を構成しているためになります。詳細は以下のドキュメントをご覧ください。

gmheapについて

以下のコマンドでは、ロックテーブル使用量を取得できます。
使用可能量, ユーザ使用可能量, 使用量(bytes) で戻り値が表示されます。詳細はこちらの記事をご覧ください。

%SYS>w ##class(SYS.Lock).GetLockSpaceInfo()
16772624,16764624,4592


★管理ポータルの場合

 システムオペレーション > システム使用 > 共有メモリヒープ使用状況 より確認できます。 

 一般メモリヒープ全体については、
     "Total SMH Pages Used"の項目の"割り当てられたSMH/ST"が、アロケート量(bytes) を示します。

 

 ロックテーブルについては
    "Lock Table"の項目の"SMH/ST使用中"が、ロックテーブルの使用量(byte) を示します。
    ユーザ使用可能量は、locksiz 値からこの値の差分により求める必要があります。

 
 



gmheap を変更する場合、IRISインスタンスの再起動を伴います。
現在の gmheap 内で設定可能な、locksiz の最大値を求めるには以下のように行います。
locksiz のみであれば、再起動なしに変更が可能です。

%SYS>write ##class(SYS.Lock).GetMaxLockTableSize()
16777216


GetMaxLockTableSize() で取得できる値よりも大きな locksiz を指定したい場合は、差分を gmheap に追加して設定する必要があります。

その場合は、IRISインスタンスの再起動後に新しい設定値が反映されます。


【注目】
2023.1以降のバージョンでは、
共有メモリヒープ(gmheap)ロックに使用する共有メモリ(locksiz) の既定値が「0」に変更されました。リリースノートは、こちら
※2022.2は、gmheap=37,568(KB)、locksiz=65,536 (Byte) でした。

構成されたグローバルバッファサイズ(データベースキャッシュサイズ)に基づき、最も効果的な設定値が適用されます。
ユーザによって、グローバルバッファサイズが設定されていない場合は、使用可能なシステムメモリから構成されます。
以前のバージョンと同様に、ユーザは引き続き特定の値でこれらの既定値をオーバーライドすることが可能です。

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