ベンチマーク

Singularityのez-prepコマンドは、ベンチマークを行うための簡略化された方法を提供します。

テストデータの準備

まず、ベンチマークのためのデータを生成する必要があります。ここでは、ベンチマークからディスクIO時間を除くために、スパースファイルを使用します。現在、SingularityはCIDの重複削除を実行していないため、これらのファイルはランダムなバイトとして処理されます。

mkdir dataset
truncate -s 1024G dataset/1T.bin

ベンチマークにディスクIO時間を含める場合は、次の方法でランダムファイルを作成してください。

dd if=/dev/urandom of=dataset/8G.bin bs=1M count=8192

ez-prepの使用

ez-prepコマンドは、最小限の設定可能なオプションを使用して、ローカルフォルダからデータの準備を簡素化します。

インライン準備によるベンチマーク

インライン準備により、CARファイルのエクスポートの必要がなくなり、メタデータを直接データベースに保存できます。

time singularity ez-prep --output-dir '' ./dataset

インメモリデータベースを使用したベンチマーク

ディスクIOを最小限に抑えるために、インメモリデータベースを選択します。

time singularity ez-prep --output-dir '' --database-file '' ./dataset

複数のワーカーを使用したベンチマーク

最適なCPUコアの利用を実現するために、ベンチマークの並列処理を設定します。注意:各ワーカーは約4つのCPUコアを使用します。

time singularity ez-prep --output-dir '' -j $(($(nproc) / 4 + 1)) ./dataset

結果の解釈

典型的な出力は次のようになります:

real    0m20.379s
user    0m44.937s
sys     0m8.981s
  • real:実経過時間。より多くのワーカーを使用すると、この時間が短縮されます。

  • user:ユーザースペースで使用されるCPU時間。userrealで割ると、使用されるCPUコアの数が近似されます。

  • sys:カーネルスペースで使用されるCPU時間(ディスクIOを示します)。

比較

以下は、ランダムな8Gファイルに対して実行されたベンチマークの結果です:

ツール
クロック時間(秒)
CPU時間(秒)
メモリ(KB)

Singularity(インライン準備あり)

15.66
51.82
99

Singularity(インライン準備なし)

19.13
51.51
99

go-fil-dataprep

16.39
43.94
83

generate-car

42.6
56.08
44

go-car + stream-commp

70.21
139.01
42

Last updated