これは InterSystems FAQ サイトの記事です。
IRIS2023.1から導入されたgmheapとlocksizの新しいデフォルト値について紹介します。
gmheap=0は、特別な設定の必要性がないほとんどのシステム(実運用システムを含む)に適切なように設計された新しいデフォルト値です。
0に設定することで、システムがシステム全体のサイズを推測し、妥当な値を算出してくれます。
gmheap=0 に設定した場合、システムは、グローバルバッファ用に設定されたメモリの合計に3%を乗じた値を基準に、300MBの下限と2GBの上限の範囲内でgmheap値を設定します。
0以外の値はそれをそのまま使用し、2GBよりはるかに大きく、あるいは300MBよりはるかに小さく設定することができます。
(ただし、小さな値を設定した場合、メモリを必要とする機能の利用が失敗する可能性があります。 同様に極端に大きな値を設定することでシステムに悪影響を与える可能性があります)
さらにこの変更以前は、.cpfファイルのgmheap設定に加えて、CPUスレッド数 に2MBを掛けた値をシステムが内部的に追加していました。
このため、異なるシステムに構成を移動するときや、物理メモリの使用量を理解しようとするときに混乱を招くことがありました。
この変更により、この追加は発生しなくなり、gmheap 設定で与えられた値が直接使われるようになりました。
以前のバージョンからのアップグレード時には、現在の gmheap 設定は、.cpf ファイルで明示的に設定された値に、明示的にこの量 (2MB * $system.Util.NumberOfCPUs()) を追加することで自動的に調整されます。
locksiz=0は、すべてのシステムに適合するように設計された新しいデフォルト値です。
この値は、ロックテーブルのサイズがgmheap パラメータで指定された共有メモリヒープのサイズによってのみ制限されることを意味します。
システムをバージョンアップする際に現在の locksiz パラメータは自動的に 0 に設定されます。
0 以外の値が指定された場合、locksizに指定されたバイト数をgmheap内で使用可能なメモリから確保します。