IngaDB 0.1 · 製品ドキュメント
IngaDB/ドキュメントAPI v1
ドキュメントを参照
ベンチマーク

分析処理のベンチマーク

イベント数とゲート数を変えて分析時間を計測しました。計測結果に加え、条件、処理上限、再現手順を掲載しています。 インシデントは証拠としてイベントごとに集約されるため、件数が増えてもグラフのノード数は増えません。

実測値再現手順リリースビルド

データの流れ

インシデントメカニズムグラフコンパイル → 分析ループ検出最上位事象P50 · 4.94%
01

集約 インシデントを部位と故障モードごとに集計し、イベントの確率に反映します。件数が増えてもノード数は増えません。

02

伝播 メカニズムグラフにはループも記録できます。 のループがある枝や深さの上限に達した枝は、処理を打ち切って理由を返します。

03

分析 ハザードごとにツリーを生成し、決定論的に計算します。

実測値

全計算・保存 What-if中央値
1101001000502005001000イベント数(対数軸)ms(対数軸)36 ms1.35 s3.7 ms701 ms
イベントゲート全計算・保存What-if中央値What-if/秒*
50836 ms3.7 ms約270
20030138 ms24.0 ms約41
50072445 ms120.2 ms約8.3
10001441.35 s701 ms約1.4

* 単一ストリームでの中央値から換算しています。2026年8月8日にApple Mシリーズの開発機で、 Docker上のリリースビルドを使い、各ゲートの分岐数を8にそろえたORツリーを計測しました。 「全計算・保存」には、証拠の定量化、カットセットの列挙、重要度の計算、固定シードによる モンテカルロ計算、リビジョンの記録を含みます。What-if分析は20回の中央値です。 この処理では、デバッグビルドはリリースビルドより約30倍遅くなります。

処理上限

数十〜数百イベントの範囲では、再計算とWhat-if分析はいずれもミリ秒単位でした。 このベンチマークのツリー構成では、分析時間はイベント数の約1.7乗に比例して増加します。 1,000イベントのWhat-if分析には約0.7秒かかりました。処理が上限に達した場合は、その内容をレスポンスで確認できます。

  • カットセット:各ゲートについて確率の高いものから10,000件まで保持し、切り捨てた分の確率質量をレスポンスに含めます。
  • 伝播の深さ:深さ24で打ち切り、対象の枝と理由をcut_branchesに列挙します。
  • k-of-n展開:組み合わせ数が64を超えると、展開を打ち切ります。それ以上の冗長構成は、目視でのレビューが難しくなるためです。

再現手順

ターミナルbash
docker compose -f deploy/docker-compose.yml -p bench up -d
CAUSAL_DB_URL=http://localhost:9876 python3 tools/benchmark-analyze.py

次に進む