homfa-runner-experiments
は、homfa-runner リポジトリのソフトウェアのベンチマークを実行し、その結果を分析するための実験用ツールです。このツールは、homfa-runner
を実行し、そのパフォーマンスを評価するために設計されています。homfa-runner
は LTL を仕様として準同型暗号を用いたモニタリングを行うソフトウェアです。
- homfa-runner ソフトウェアがインストールされていること
- Unix 系のシェル環境(Bash など)
- homfa-runner-experiments のインストール
git clone [email protected]:ys7i/homfa-runner-experiments.git
- homfa-runner のインストール
git clone [email protected]:ys7i/homfa-runner.git
homfa-runner-experiments は 2 つのスクリプト(benchmark.sh と output_spreadsheet_data.sh)とベンチマークの実行結果で構成されています。
benchmark.sh によってベンチマークの実行結果が格納されます。各 LTL 名で内部にディレクトリが生成され、その内部に実行日時, LTL 名, モニタリングの入力ファイル名を連結したファイル名でベンチマークの実行結果が保存されます。
ベンチマーク計測を実行する Shell Script です。
- 実行前にスクリプト内の
HOMFA_RUNNER_DIR
をhomfa-runner-experiments
からhomfa-runner
への相対パスに書き換えてください。 - homfa-runner に対応する LTL 設定ファイルと input ファイルがあることを確認してください。
実行例
bash benchmark.sh n14 7 input5600.txt
引数は対象 LTL 名, atomic proposition の数, 入力ファイルの名前です。LTL 名はhomfa-runner
のgraph-config
ディレクトリ内にある LTL のディレクトリ名, 入力ファイルはhomfa-runner
の input-files ディレクトリ内にあるファイル名です。atomic proposition の数(例では7
)は LTL が決まると一意に定まります。これが block アルゴリズムの block 数に相当します。
benchmark.sh が実行されるとbk
やsk
というファイルがhomfa-runner-experiments
内に生成され、その後enc_in
というファイルが生成されますが、これらは準同型暗号の key ファイルやモニタリングの入力ファイルです。これらは gitignore されています。
- 次の結果の解析を参照してください。
benchmark.sh
を実行すると、benchmark の結果が出力されます。
出力例
/usr/bin/bash benchmark.sh n3-g10 2 input2400.txt
1 ../homfa-runner/build/src/main generate-key --input-file ../homfa-runner/input-files/input2400.txt 1
+ eval ../homfa-runner/build/src/main generate-key --input-file ../homfa-runner/input-files/input2400.txt
++ ../homfa-runner/build/src/main generate-key --input-file ../homfa-runner/input-files/input2400.txt
2400
+ set +x
separate block
3 time ../homfa-runner/build/src/main separate --type=block --top-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-top.spec --bottom-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-bottom.spec -p --block-size 2 1
+ eval time ../homfa-runner/build/src/main separate --type=block --top-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-top.spec --bottom-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-bottom.spec -p --block-size 2
++ ../homfa-runner/build/src/main separate --type=block --top-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-top.spec --bottom-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-bottom.spec -p --block-size 2
[2023-11-15 16:29:03.413] [info] bottom
real 7m55.757s
user 13m24.928s
sys 0m30.413s
+ set +x
3 time ../homfa-runner/build/src/main separate --type=block --top-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-top.spec --bottom-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-bottom.spec -p --block-size 2 2
+ eval time ../homfa-runner/build/src/main separate --type=block --top-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-top.spec --bottom-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-bottom.spec -p --block-size 2
++ ../homfa-runner/build/src/main separate --type=block --top-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-top.spec --bottom-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-bottom.spec -p --block-size 2
[2023-11-15 16:37:00.826] [info] bottom
real 7m57.432s
user 13m36.855s
sys 0m29.338s
+ set +x
3 time ../homfa-runner/build/src/main separate --type=block --top-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-top.spec --bottom-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-bottom.spec -p --block-size 2 3
+ eval time ../homfa-runner/build/src/main separate --type=block --top-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-top.spec --bottom-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-bottom.spec -p --block-size 2
++ ../homfa-runner/build/src/main separate --type=block --top-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-top.spec --bottom-file ../homfa-runner/graph-config/two-dfa/n3-g10/forward-bottom.spec -p --block-size 2
[2023-11-15 16:44:32.363] [info] bottom
real 7m31.521s
user 13m12.905s
sys 0m26.250s
+ set +x
この結果から実行にかかった時間のみを抽出するのがoutput_spreadsheet_data.sh
です。
実行例
bash output_spreadsheet_data.sh result/n14/2023-11-17_n14_7_input5600.txt
実行結果
5m39.351s 5m19.491s 5m9.442s
2m44.457s 2m44.101s 2m44.655s
0m20.948s 0m21.184s 0m21.089s
0m11.261s 0m11.095s 0m11.170s
0m20.187s 0m20.093s 0m19.813s
0m10.261s 0m10.178s 0m10.469s
0m5.154s 0m5.113s 0m4.902s
0m3.554s 0m3.551s 0m3.562s
0m4.092s 0m4.126s 0m3.992s
0m3.439s 0m3.377s 0m3.394s
出力結果はスプレッドシートに貼り付けられるようになっています。私(阪口)は notion で結果を管理していますが、直接貼ると 1 つのセルにすべて貼り付けられてしまうので、一度スプレッドシートに貼り付けて再度コピーをした上で notion に貼り付けるとうまく整形されます。