PIONEチュートリアル-XES
PIONEは実行後にその処理結果をログファイルとして出力します。このログファイルをシーケンス図やグラフにすることで、処理の流れや並列の状況を確認することができます。
目次
ProMを利用したログファイルの可視化
ProMを用いて、ログファイルを閲覧する方法を示します。
ログファイルの確認
PIONEコマンドで出力されるログファイルから処理の流れを確認してみましょう。
PIONEチュートリアル-PNML#基本3(複数種類の入出力がある処理)を実行ログを確認してみます。
ログファイルからXESファイルへの変換
PIONEコマンドを実行すると-bで指定したディレクトリ内にログファイル(pione-process.log)が出力されます。
これをProMでインポートできる形式であるXESファイルに変換します。
変換処理は下記のように行います。
pione log format TextSwapSed/pione-process.log > log.xes
変換ファイル名の拡張子を.xes以外にするとProMで読み取れない場合があるので、ご注意ください。
(補足):--log-idを使用すると指定したIDのみのログとして出力することができます。IDが分からない場合はpione log list-idを使用するとID一覧を見ることができますのでここから指定すると良いでしょう。
XESファイルをProMで開く
ProMを起動後、まずウィンドウの右上にあるimport...ボタンを押すとファイルダイアログが開きますので、閲覧したいXESファイルを選択します。
選択したXESファイルが表示されますので、次はウィンドウの右側にある▼(Use resource)ボタンを押します。
すると、下記のようなActionsが表示されますので、表示したい内容に合わせてActionを選択し、下部のStartボタンを押すとグラフや図が表示されます。今回はAnalyze using Dotted Chartを選択してみましょう。
Dotted Chartでのログ閲覧
Dotted Chartでの閲覧内容を示します。
Component type: ドットを表示するコンポーネントを選択します。 |
では、PIONEチュートリアル-PNML#基本3(複数種類の入出力がある処理)のログを確認してみましょう。
まずはTime optionをRelative(Ratio)(Time)に設定すると、タイムラインの全体像が見えるようになります。そして、コンポーネントをTask IDに設定してみましょう。
上図では1, 2行目でMainRule、5行目からTextSed、10行目からTextSwapの処理の流れを見ることができます。
また、ColorやShape/SizeをEventにするとschedule, start, completeなどの違いが分かりやすくなります。
上図では茶四角がschedule、桃丸がstart、水三角がcompleteとなっています。今回はシングルタスクで行っているので、6 ~ 9行目、10 ~ 13行目に着目してみると順番に逐次処理していることがよく分かります。また、1, 2行目の緑四角がsuspend、青菱形がresumeとなっていますので、その間でMainで呼び出しから返ってくるまでの時間を見ることもできます。
並列処理の比較
PIONEコマンドを並列で処理したときに意図通りの並列処理をしているかを見てみます。
PIONEチュートリアル-PNML#基本3(複数種類の入出力がある処理)のマルチタスクでの動作ログを比較してみましょう。
t=2では2つずつ, t=8では8つずつそれぞれ並列処理が行われ、Mainのsuspend - resume間の時間も少なくなっています。しかし、タスクの準備と後処理の時間が増えているので、効率があまり変わりません。従って、この処理の並列化はあまり有効ではないと分かります。
並列処理の比較2
1つのRuleが大きい処理について並列化を行って、ログを比較してみます。PIONEチュートリアル-PNML#応用1(Eosコマンドへの利用)のコマンドのログを見てみましょう。1つのRuleでいくつもの2D投影像を作成しているため処理が大きくなっています。
このコマンドではt=2とすることで全体の処理が2分程度だったのが、1分程度に削減されています。
このように使用するpione定義書あるいはPNMLと入出力のファイル数などから効率の良いタスク数を設定することが重要です。