PIONEチュートリアル-XES

提供: Eospedia
2014年11月10日 (月) 02:59時点におけるKinoshita (トーク | 投稿記録)による版

移動: 案内検索

 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で読み取れない場合があるので、ご注意ください。

XESファイルをProMで開く

 ProMを起動後、まずウィンドウの右上にあるimport...ボタンを押すとファイルダイアログが開きますので、閲覧したいXESファイルを選択します。
ProM3.png

 選択したXESファイルが表示されますので、次はウィンドウの右側にある▼(Use resource)ボタンを押します。
ProM4.png

 すると、下記のようなActionsが表示されますので、表示したい内容に合わせてActionを選択し、下部のStartボタンを押すとグラフや図が表示されます。今回はAnalyze using Dotted Chartを選択してみましょう。
ProM5.png

Dotted Chartでのログ閲覧

 Dotted Chartでの閲覧内容を示します。

ProM6.png

Component type: ドットを表示するコンポーネントを選択します。
Time option: タイムラインの種類を選択します。
Time sort (chart): タイムラインの間隔を設定します。
Color By: ドットの色分けのルールを選択します。
Size/Shape By: ドットのサイズや形を設定します。(Size shows # of eventsが無効のとき)
Sort By: 各行のソートルールを選択します。
Mouse Mode: マウス操作のモードを選択します。
Updateボタン: 上記の設定を反映して再描画します。


 では、PIONEチュートリアル-PNML#基本3(複数種類の入出力がある処理)のログを確認してみましょう。
まずはTime optionをRelative(Ratio)(Time)に設定すると、タイムラインの全体像が見えるようになります。そして、コンポーネントをTask IDに設定してみましょう。
PIONE-PNML-Basic3-ProM-1.png
PIONE-PNML-Basic3-ProM.png
上図では1, 2行目でMainRule、5行目からTextSed、10行目からTextSwapの処理の流れを見ることができます。

また、ColorやShape/SizeをEventにするとschedule, start, completeなどの違いが分かりやすくなります。
PIONE-PNML-Basic3-ProM-1.png
PIONE-PNML-Basic3-ProM1.png
上図では茶四角がschedule、桃丸がstart、水三角がcompleteとなっています。今回はシングルタスクで行っているので、6 ~ 9行目、10 ~ 13行目に着目してみると順番に逐次処理していることがよく分かります。また、1, 2行目の紫四角がsuspend、緑菱形がresumeとなっていますので、その間でMainで呼び出しから返ってくるまでの時間を見ることもできます。

並列処理の比較

 PIONEコマンドを並列で処理したときに意図通りの並列処理をしているかを見てみます。
PIONEチュートリアル-PNML#基本3(複数種類の入出力がある処理)のマルチタスクでの動作ログを比較してみましょう。

PIONE-PNML-Basic3-ProM2-1.png
PIONE-PNML-Basic3-ProM2.png
t=2
PIONE-PNML-Basic3-ProM3-1.png
PIONE-PNML-Basic3-ProM3.png
t=8


t=2では2つずつ, t=8では8つずつそれぞれ並列処理が行われ、Mainのsuspend - resume間の時間も少なくなっています。しかし、タスクの準備と後処理の時間が増えているので、効率があまり変わりません。従って、この処理の並列化はあまり有効ではないと分かります。

並列処理の比較2

1つのRuleが大きい処理について並列化を行って、ログを比較してみます。PIONEチュートリアル-PNML#応用1(Eosコマンドへの利用)のコマンドのログを見てみましょう。1つのRuleでいくつもの2D投影像を作成しているため処理が大きくなっています。

PIONE-PNML-Advanced1-ProM.png
-tなし
PIONE-PNML-Advanced1-ProM-2.png
t=2


このコマンドではt=2とすることで全体の処理が2分程度だったのが、1分程度に削減することができています。
このように使用するpione定義書あるいはPNMLと入出力のファイル数などから効率の良いタスク数を設定することが重要です。