CICS記憶域に関するその他の問題

タスクが大きすぎる記憶域を要求していたのかどうか

タスクが一時停止状態になった場合、そのタスクの要求する記憶域が大きすぎることが原因であるかどうかを確認するには、SMの一時停止待ち行列の要約を調べてください。この要約には、その他の情報と併せて、記憶マネージャーによって一時停止されているタスクごとに、要求されたバイト数が表示されます。この情報から、いずれかのタスクが、大きすぎる記憶域のGETMAIN要求を発行したかどうかを確認できます。たとえば、以下はSMの一時停止待ち行列の要約にあるダンプ出力例ですが、ここではタスク41が10,000,000バイトもの記憶域を要求しています。

==SM: Suspend queue summary

KE Task Tran # Susptok Subpool DSA Request 

053E5400 0000041 04080011 U0000041 EUDSA 10000016 

一時停止状態のタスクが妥当な容量の記憶域に対してGETMAIN要求を発行している場合は、システムが記憶域不足(SOS)になっていないかどうかを確認してください。

記憶域が不足しているかどうか

タスクが要求する記憶域の容量が妥当な場合でも、システムがSOS状態であるために、その要求を処理できないことがあります。

これが一時停止の原因かどうかを確認するには、フォーマット化したダンプでDSAの要約情報を調べてください。DSAの要約には、各DSAの現在の空きスペースが、バイト数および全記憶域に対する比率の両方で表示されます。また、システム上の最大空き領域、つまり一番大きな連続記憶域のサイズも表示されます(ここでいう「連続記憶域」とは、他のレコードで分断されていない記憶域を指します。1つのCIに収まらない大きなレコードは複数のCIに分割して格納でき、これらのCIが必ずしも連続していなくてもかまいません)。

要求されている記憶域よりもこの最大空き領域が小さい場合、これが、タスクが要求した記憶域を取得できない原因と考えられます。

空きスペースの大きさが予想外に小さい場合は、タスク サブプールの要約を調べてください。タスクが極端に多くのGETMAIN要求を発行していた場合、ループが発生している可能性があります。ループ タスクはGETMAIN要求を繰り返し発行するため、各要求は妥当な量の記憶域を対象としていても、全体では非常に大きな容量を要求することになります。ループが生じていた場合は、『CICS Problem Determination Guide』の「Dealing with loops」を参照してください。

タスクが要求した記憶域の容量が妥当で、システムにも十分な空き記憶域がある場合は、空き記憶域が分断されていることが、GETMAIN要求が失敗している原因かどうかを確認する必要があります。

記憶域の分断が原因でGETMAIN要求が失敗しているかどうか

DSAの要約を参照してください。現在の空きスペースが最大空き領域より極端に大きい場合は、DSAが分断されている可能性があります。