9.3.2 TASKTMのファイル出力
情報を取得する度にファイルへ出力するとディスクへのアクセス処理で時間が掛かります。
そこで、テストの並行実行や監視処理の妨げにならないようにファイルへの出力は専用のスレッドで行われます。また、ディスクへのアクセス回数を減らすために、メモリ上に情報を蓄積してから出力します。
メモリ上への蓄積はOSが提供するメモリマップ機能を利用します。これにより、coreファイルを出力して異常終了するような障害発生時でも、メモリ上に蓄積した情報がcoreファイルとは別のファイルに出力されます。このファイルを利用することで、coreファイルが無い場合でも、障害発生時のシステムテスト支援の実行状況を解析することができます。
1つのファイルにTASKTM情報が入り切らなくなった場合、出力先を次のファイルへ切り替えます。出力先のファイルを切り替える際にファイル名称をメッセージ出力します。また、強制出力コマンドを実行することで、メモリ上に蓄積した情報がファイルへ出力され編集可能となります。強制出力の詳細については「9.3.3 TASKTM強制出力」を参照してください。
メモリマップ
メモリマップ機能を利用したファイルへの出力方法の概要を以下に示します。
- 分割マッピング
-
1ファイル全てを一度にマッピングした場合、ファイルサイズが大きいと大量のメモリを消費してしまいます。トラブルシュート情報ファイルは先頭から順に書込みを行うためファイル全体を一度にマッピングしておく必要はなく、消費メモリ削減のために一定サイズに分割してマッピングを行います。この分割する単位を1ブロックとし、分割するサイズのことをブロックサイズと呼びます。ブロックサイズはシステム定義で指定します。
分割してマッピングするサイズはOSが提供するメモリマッピング機能の仕様によりページサイズの倍数にする必要があります。そのため、指定された値をブロックサイズの最大値として扱い、ページサイズの倍数値を実際のブロックサイズとして起動時に算出・決定します。
例を以下に示します。
図9‒3 実際のブロックサイズ算出例 - マッピング領域管理
-
1ブロックがレコードサイズの倍数とならなかった場合は、ブロック内に未使用領域が発生してしまいます。そこで、1ブロック内の状態を管理するため、ヘッダとフッタを付加して未使用領域の管理を行います。概要を以下に示します。
図9‒4 メモリマップ領域管理の概要 - 複数マッピング
-
1ブロックに情報が入り切らなくなった場合はマッピング領域の切り替えを行う必要がありますが、マッピング領域を切り替えている間に取得したトラブルシュート情報は蓄積する先がないため欠落してしいます。トラブルシュート情報の欠落を少なくするために起動時に複数ブロックのマッピングを行い、マッピング領域を切り替えている間もトラブルシュート情報の取得が行えるようにします。
マッピングするブロック数はシステム定義で指定します。概要を以下に示します。
図9‒5 起動時の複数同時マッピング概要 - マッピング領域の切り替え
-
1ブロック分の情報取得が終わりマッピング解除が完了した後に、次のマッピングを行います。既に出力先ファイルの終端までマッピングしていた場合は、次の出力先ファイルをマッピングします。概要を以下に示します。
図9‒6 マッピング領域の切り替え概要 図9‒7 マッピング領域の切り替え概要(ファイル跨ぎ)
ファイル管理
TASKTMで使用するファイルは、UNIXファイルを使用します。ファイルが存在しない場合は新たに作成します。既に存在する場合は既存ファイルを利用します。ファイル名は作成時に以下の命名基準に従って自動的に決定します。
「テスト識別子+"tasktm"+通番(10進数の3桁)」
また、ファイル数およびファイルサイズについてはシステム定義で指定します。システム起動時にファイルを新規作成する場合は、定義で指定したファイルサイズ×ファイル数のファイルを作成するため、十分なディスク容量を用意してください。
指定したファイル数を使い切った場合は、最も古いファイルを上書き再利用します。既存ファイルがシステム定義で指定したファイルサイズと異なる場合は、上書き再利用することが決まった時点で指定したサイズへ切り詰め・伸長を行います。
次の出力先として決定したファイルを上書き再利用することが決まるタイミングは、実際に出力先ファイルが切り替わるタイミングよりも早いためファイルの切り詰め・伸長を行う場合はメッセージを出力します。
ファイルの縮退が発生して出力可能なファイルが1つのみになった場合、ファイルの切り替えは発生しないためファイル切替メッセージの出力を行わずに、ファイルの先頭からマッピングを行います。
メッセージが出力されるタイミングについて以下に示します。
|
マッピング領域を3ブロックとして、1.、2.~6.の順にマッピングしていくとします。4.がマッピングされた時点で、ファイル2のサイズが定義と異なる場合、切り詰めや伸長を行い、メッセージを出力します。3.のマッピングが解除された時点で、出力先ファイルが切り替わるため、メッセージを出力します。
出力契機と出力先切り替え
ファイルへの出力はマッピングしているブロック単位に行います。マッピングしている領域が満杯になるか、または強制出力コマンド実行時にファイルへ出力します。
また、出力先ファイルが満杯になるか強制出力コマンドが出力先切り替えオプション指定で実行された場合は、次の出力先ファイルへ切り替えます。
強制出力コマンドで出力する場合、コマンド実行時点で以降の領域は未使用領域となるため、短時間で連続実行するとファイルの使用効率が悪くなります。最新のトラブルシュート情報をすぐ確認したい場合や、現行出力先ファイルのバックアップが必要な場合以外はメリットが無いため、必要以上に実行しないでください。
|
|
|
|
出力先ディレクトリ
出力先ディレクトリは、「/opt/HSIC/job/テスト識別子/spool/dceeinf/tasktm」に出力します。