AWS 32コア物理環境における VMemKV と RocksDB の包括的な性能ベンチマーク結果。各グラフの下部アコーディオンから、個別ディスカッション(Giscus)が行えます。

Variants

  • RocksDB
  • Baseline: すべての最適化機能をオフにしたベースラインの vmemkv。
  • Simd: T1 レンジスキャンに AVX2/AVX-512 ベクトル並列走査を適用。
  • Bloom: 存在しないキーの Get を O(1) で弾く T1 ブルームフィルタを有効化。
  • Hints: Larger-than-memory環境でスワップによるストールを防ぐ madvise メモリヒントを有効化。
  • T1InlineValue: 8B以下のValueを T1 インデックススロットへ埋め込み T2 の処理をバイパス。
  • Prefaulting: 2MB Chunk Alloc & Pre-faulting による mmap_lock ロック衝突の緩和。

Environment

  • CPU: Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz (32 Cores / 64 Threads)
  • Cache: L1D 48KB, L1I 32KB, L2 1.25MB (per 2 cpus) | L3 54MB (per 32 cpus)
  • RAM: Total 66.3 GB (In LTM runs, RAM is constrained to 1GiB)
  • OS / Kernel: Ubuntu 22.04 LTS (Linux 6.17.0-1019-aws)
  • Compiler: GCC / CMake Release Build
  • Disk: Local NVMe SSD (AWS Instance Store, Swap Media)

Overall Notes & Annotations

このベンチマーク実験全体に対する考察やアノテーションメモをローカルに保存できます(ブラウザの localStorage に自動保存されます)。

Insert Workload

実験概要: Measures incremental database insertions starting from a fresh store.

Update Workload

実験概要: Replaces values of randomly selected existing keys in-place.

Delete Workload

実験概要: Removes existing keys, triggering index node deallocation and space reclamation.

Get (Hit) Workload

実験概要: Retrieves existing keys using Zipfian distribution (locality of access).

Get (Miss) Workload

実験概要: Queries non-existent keys to evaluate T1 Bloom Filter filtering efficiency.

Scan (No Reorg) Workload

実験概要: Performs range queries of 100 consecutive keys under stable database state. (⚠️ 注意: 現在のSCAN実装には設計と異なるバグがあり、リクエストごとにインデックス全体を全件コピーしてO(N log N)ソートするため、データ数Nが膨大になるスモールバリュー環境で極端に性能が低下しています。次回修正予定。)

Scan (With Reorg) Workload

実験概要: Executes range queries concurrently while background T1 reorganization is running. (⚠️ 注意: 現在のSCAN実装には設計と異なるバグがあり、リクエストごとにインデックス全体を全件コピーしてO(N log N)ソートするため、データ数Nが膨大になるスモールバリュー環境で極端に性能が低下しています。次回修正予定。)

Insert Workload

実験概要: Measures incremental database insertions starting from a pre-populated LTM store.

Update Workload

実験概要: Replaces values of randomly selected existing keys in-place under cgroup limit.

Delete Workload

実験概要: Removes existing keys, triggering index node deallocation and space reclamation in LTM.

Get (Hit) Workload

実験概要: Retrieves existing keys using Zipfian distribution, validating active page swap hit rate.

Get (Miss) Workload

実験概要: Queries non-existent keys to evaluate T1 Bloom Filter filtering efficiency in memory-constrained environment.

Scan (No Reorg) Workload

実験概要: Performs range queries of 100 consecutive keys under stable database state with SSD swappings. (⚠️ 注意: 現在のSCAN実装には設計と異なるバグがあり、リクエストごとにインデックス全体を全件コピーしてO(N log N)ソートするため、データ数Nが膨大になるスモールバリュー環境で極端に性能が低下しています。次回修正予定。)

Scan (With Reorg) Workload

実験概要: Executes range queries concurrently while background T1 reorganization is running under memory limit. (⚠️ 注意: 現在のSCAN実装には設計と異なるバグがあり、リクエストごとにインデックス全体を全件コピーしてO(N log N)ソートするため、データ数Nが膨大になるスモールバリュー環境で極端に性能が低下しています。次回修正予定。)

Insert Workload

実験概要: Measures incremental database insertions starting from a pre-populated LTM store (Large Values).

Update Workload

実験概要: Replaces values of randomly selected existing keys in-place under cgroup limit (Large Values).

Delete Workload

実験概要: Removes existing keys, triggering index node deallocation and space reclamation in LTM (Large Values).

Get (Hit) Workload

実験概要: Retrieves existing keys using Zipfian distribution, validating active page swap hit rate (Large Values).

Get (Miss) Workload

実験概要: Queries non-existent keys to evaluate T1 Bloom Filter filtering efficiency in memory-constrained environment (Large Values).

Scan (No Reorg) Workload

実験概要: Performs range queries of 100 consecutive keys under stable database state with SSD swappings (Large Values). (⚠️ 注意: 現在のSCAN実装には設計と異なるバグがあり、リクエストごとにインデックス全体を全件コピーしてO(N log N)ソートするため、データ数Nが膨大になるスモールバリュー環境で極端に性能が低下しています。次回修正予定。)

Scan (With Reorg) Workload

実験概要: Executes range queries concurrently while background T1 reorganization is running under memory limit (Large Values). (⚠️ 注意: 現在のSCAN実装には設計と異なるバグがあり、リクエストごとにインデックス全体を全件コピーしてO(N log N)ソートするため、データ数Nが膨大になるスモールバリュー環境で極端に性能が低下しています。次回修正予定。)