派生プロセスのデータを記録するかどうかを制御します。option に使用できる値は次のとおりです。
on - 関数 fork、exec、およびそのバリアントによって作成される派生プロセスについてのみ実験を記録します。
all - すべての派生プロセスについて実験を記録します。
off - 派生プロセスの実験を記録しません。
= regexp - 指定された正規表現と名前または系統が一致する、派生プロセスの実験をすべて記録します。
デフォルトでは、-F on オプションが設定されるので、コレクタは、fork(2)、fork1(2)、fork(3F)、vfork(2)、および exec(2) 関数とそのバリアントの呼び出しによって作成されたプロセスを追跡します。vfork への呼び出しは、内部で fork1 への呼び出しに置換されます。
MPI 実験では、デフォルトで派生も追跡されます。
-F all オプションを指定すると、コレクタは、system(3C)、system(3F)、sh(3F)、posix_spawn(3p)、posix_spawnp(3p)、および popen(3C)、および同様の関数の呼び出しによって作成されたものを含むすべての派生プロセス、そして関係する派生プロセスを追跡します。
-F '= regexp ' オプションを指定すると、コレクタはすべての派生プロセスを追跡します。派生名またはサブ実験名が指定の正規表現と一致する場合、コレクタはサブ実験を作成します。正規表現については、regexp(5) のマニュアルページを参照してください。
派生プロセスのデータを収集するとき、コレクタは、派生プロセスごとに新しい実験を親の実験内に 1 つ開きます。これらの新しい実験は、次のように、下線、文字、および数字を実験接尾辞に追加することで命名されます。
文字「f」は fork、「x」は exec、「c」はそのほかの派生プロセスをそれぞれ表します。
数字は、fork または exec (成功したかどうかに関係なく)、あるいはその他の呼び出しのインデックスです。
たとえば初期プロセスの実験名が test.1.er の場合、3 回目の fork の呼び出しで作成された子プロセスの実験は test.1.er/_f3.er となります。この子プロセスが新しいイメージを実行した場合、対応する実験名は test.1.er/_f3_x1.er となります。この子プロセスが popen 呼び出しを使用して別のプロセスを作成した場合、実験名は test.1.er/_f3_x1_c1.er となります。
アナライザと er_print ユーティリティーは、親実験が読み込まれると、自動的に派生プロセスの実験を読み込み、データ画面に派生を表示します。
表示するデータをコマンド行から選択するには、er_print か analyzer にパス名を明示的に指定します。指定するパスには、親の実験名と、親ディレクトリ内の派生実験名を含める必要があります。
たとえば、test.1.er 実験の 3 回目の fork のデータを表示する場合は、次のように指定します。
er_print test.1.er/_f3.er
analyzer test.1.er/_f3.er
もう一つの方法として、関心のある派生の実験の明示的な名前を入れた実験グループファイルを用意する方法もあります。
アナライザで派生プロセスを調べるには、親の実験を読み込んで、「表示」メニューから「データをフィルタ」を選択します。実験のリストは、親の実験のみが選択されて表示されます。これを選択解除し、対象とする派生実験を選択します。
派生プロセスが追跡されている間に親プロセスが終了した場合、まだ実行している派生のデータ収集は継続されます。それに従って親の実験ディレクトリは拡大を続けます。
また、スクリプトのデータを収集して、スクリプトの派生プロセスを追跡することもできます。詳細は、「スクリプトからのデータの収集」を参照してください。