System routine buffer (# KB) shortage is detected.... のメッセージの意味と対処方法
これはInterSystems FAQ サイトの記事です。
コンソールログファイル (※1) に、以下のメッセージが表示されることがあります。
05/14/19-09:32:14:056 (6888) 0 System routine buffer (64 KB) shortage is detected, 430 routine buffers configured, adjusted per process cached rtn to 71
(※1)
コンソールログファイルは、[管理ポータル] > [システムオペレーション] > [システムログ] > [コンソール・ログ] から参照できます。
または、以下ファイルを直接参照することもできます。
<インストールディレクトリ>\mgr\cconsole.log
上記メッセージでは、ルーチンバッファサイズのうちの 64KB バッファの不足が検出されています。
弊社製品インストール時点のルーチンキャッシュ用メモリのデフォルト値は 35MB に設定されていて、各バッファ(4KB/16KB/64KB)にそれぞれに 430 バッファを割り当てた合計値で設定されています(※補足)。
「adjusted per process cached rtn to 71」については、1プロセスあたりに参照できるルーチン個数が 71個に調整されています。
初期値の30%以下になると上記のメッセージがコンソールログに記録されるようになっています。
上記メッセージが出ているまま使用し続けた場合、ディスクアクセスが増えパフォーマンスが落ちる可能性もあります。
対策としては、ルーチンキャッシュ用メモリを増加させることで、ログが表示されなくなります。
【注意】 ルーチンキャッシュ用メモリの変更には、InterSystems製品の再起動が必要です。
IRISの Interoperabilityメニュー、または Ensembleメニュー では、コンポーネント作成時に上記メッセージが出力されるケースがあります。
インストール後、初期値の 35MB を 64MB 程度に増やして様子を見てください。
なお、ルーチンキャッシュ用メモリが実行環境で過不足ないかどうか、については実稼働環境で確認するツールがあります。
[管理ポータル] > [システムオペレーション] > [システム使用]
または
^GLOSTATルーチン/^mgstatルーチン 上記ツールをアプリケーション稼働中 60 秒間計測します。
(1度の計測だけではなく、時間間隔をあけ数回計測します。)
「ルーチンバッファ読み込みと保存」 または 「Routine buffer loads and saves 」の値が 20以下であれば、設定値したメモリで十分と言えます。
(最適値は 0 で、実行用ルーチンが全てキャッシュ上にある状態を示します。)
キャッシュの設定については、下記の技術資料もご確認ください。
(※補足)
バージョン2010.1~2014.1では、初期サイズは24MBで、各バッファ(4KB/16KB/64KB)に 300 バッファを割り当てが合計値が設定されます。