(a)a bash JAVA jar(以下、my_shell_script
)を呼び出すシェルスクリプト、および(b)他の関数をインポートするPythonスクリプトPythonパッケージですが、Python以外のパッケージやソフトウェア(以下my_Python_script
)は呼び出しません。両方のスクリプトは同じ目的を持っています:同じ入力(以下、testinput
)を取り、おおよそ同じ出力を生成します。同じタスクのシェルスクリプトとPythonスクリプトのメモリ使用量の比較
私は両方のスクリプトのメモリ使用量を時間の関数として測定して比較したいと思います。
このため、massif
(time_unitをミリ秒に設定)を使用してvalgrind
で各スクリプトを実行し、その後に大量出力の概要をms_print
で指定します。 valgrindの/山塊記録しながら
INF=testinput
# Testing Shell script
valgrind --tool=massif --pages-as-heap=yes --time-unit=ms --massif-out-file=${INF}_shell.out bash my_shell_script -f $INF -j my_java_jar
ms_print --threshold=50.0 ${INF}_shell.out > ${INF}_shell.summary
# Testing Python script
valgrind --tool=massif --pages-as-heap=yes --time-unit=ms --massif-out-file=${INF}_Python.out python2 my_python_script $INF
ms_print --threshold=50.0 ${INF}_Python.out > ${INF}_Python.summary
私はhtop
経由で見たものと大体一致しているmy_python_script
のメモリ使用量、これはmy_shell_script
の場合はそうではありません。 htop
の統計情報は、実行中のGBのメモリ使用量がmy_shell_script
であることを示していますが、valgrind/massifはわずか数十MBのメモリしか使用していません。
したがって、私はvalgrind/massifがbashコードの呼び出しのメモリ使用量を記録していると考えていますが、bashコードが呼び出しているJAVA jarのメモリ使用量は記録していないと考えられます。
my_shell_script
のメモリ使用量を時間の関数として正しく測定するにはどうすればよいですか?