Benchmark Results (2026071500)
AWS 32コア物理環境における vmemkv と RocksDB の性能比較ベンチマーク。 Zero-allocation化を実施。
Stacking Variants
各最適化の詳細は Design Document を参照。
- RocksDB: LSM-Tree のベースライン
- Baseline: (In-memory) vmemkv 最適化なし (Larger-than-memory) Simdのみ
- +BF: + T1 Bloom Filter
- +Simd: +BF + SIMD Scan
- +Hint: +Simd + T2 Memory Hints
- +Inline: +Hint + T1 Inline Value
- +Prefault: +Inline + T2 Async Prefaulting (全部盛り)
Workloads
- Key: 16 bytes
- Value: 8 bytes / 1KB / 64KB
- Scan: 指定したキー範囲内で100件の読み取りを行う。事前にReorganizeも実施する
- 8B In-Memory: Value 8 bytes.数百万件程度のInsertを事前に行う
- 1KB In-Memory: Value 1KB. 数百万件程度のInsertを事前に行う
- 1KB Larger-than-memory (LTM): Value 1KB. cgroupでメモリ量を1GiBに制限し、4GiBぶんのInsertを事前に行う
Environment
- CPU: Intel(R) Xeon(R) Platinum 8375C CPU @ 2.90GHz (32 Cores / 64 Threads)
- RAM: 66.3 GB (LTM実行時は cgroup 1GiB 制限)
- Disk: Local NVMe SSD (AWS Instance Store, Swap Media)
Insert Workload
実験概要: Measures write throughput when inserting unique keys sequentially into empty/pre-populated store.
Update (Zipf) Workload
実験概要: Measures update throughput under Zipf access distribution (stateful updates).
Delete (Zipf) Workload
実験概要: Measures concurrent delete throughput (T1 index removals).
Get Miss (Zipf) Workload
実験概要: Evaluates read throughput for non-existent keys (tests Bloom Filter efficiency).
Get Hit (Zipf) Workload
実験概要: Measures point lookups for existing keys under Zipf distribution (cache-friendly).
Get Hit (Uniform) Workload
実験概要: Measures point lookups for existing keys under Uniform distribution (extreme cache misses).
Scan (No Reorg - Zipf) Workload
実験概要: Executes 100-key range queries under Zipf distribution with active append region.
Scan (No Reorg - Uniform) Workload
実験概要: Executes 100-key range queries under Uniform distribution (strict sequential prefetching).
Scan (With Reorg - Zipf) Workload
実験概要: Executes range queries after reorganize, pointing to a fully sorted in-memory region (Zipf).
Scan (With Reorg - Uniform) Workload
実験概要: Executes range queries after reorganize, pointing to a fully sorted in-memory region (Uniform).
Insert Workload
実験概要: Measures write throughput when inserting unique keys sequentially into empty/pre-populated store.
Update (Zipf) Workload
実験概要: Measures update throughput under Zipf access distribution (stateful updates).
Delete (Zipf) Workload
実験概要: Measures concurrent delete throughput (T1 index removals).
Get Miss (Zipf) Workload
実験概要: Evaluates read throughput for non-existent keys (tests Bloom Filter efficiency).
Get Hit (Zipf) Workload
実験概要: Measures point lookups for existing keys under Zipf distribution (cache-friendly).
Get Hit (Uniform) Workload
実験概要: Measures point lookups for existing keys under Uniform distribution (extreme cache misses).
Scan (No Reorg - Zipf) Workload
実験概要: Executes 100-key range queries under Zipf distribution with active append region.
Scan (No Reorg - Uniform) Workload
実験概要: Executes 100-key range queries under Uniform distribution (strict sequential prefetching).
Scan (With Reorg - Zipf) Workload
実験概要: Executes range queries after reorganize, pointing to a fully sorted in-memory region (Zipf).
Scan (With Reorg - Uniform) Workload
実験概要: Executes range queries after reorganize, pointing to a fully sorted in-memory region (Uniform).
Insert Workload
実験概要: Measures write throughput when inserting unique keys sequentially into empty/pre-populated store.
Update (Zipf) Workload
実験概要: Measures update throughput under Zipf access distribution (stateful updates).
Delete (Zipf) Workload
実験概要: Measures concurrent delete throughput (T1 index removals).
Get Miss (Zipf) Workload
実験概要: Evaluates read throughput for non-existent keys (tests Bloom Filter efficiency).
Get Hit (Zipf) Workload
実験概要: Measures point lookups for existing keys under Zipf distribution (cache-friendly).
Get Hit (Uniform) Workload
実験概要: Measures point lookups for existing keys under Uniform distribution (extreme cache misses).
Scan (No Reorg - Zipf) Workload
実験概要: Executes 100-key range queries under Zipf distribution with active append region.
Scan (No Reorg - Uniform) Workload
実験概要: Executes 100-key range queries under Uniform distribution (strict sequential prefetching).
Scan (With Reorg - Zipf) Workload
実験概要: Executes range queries after reorganize, pointing to a fully sorted in-memory region (Zipf).
Scan (With Reorg - Uniform) Workload
実験概要: Executes range queries after reorganize, pointing to a fully sorted in-memory region (Uniform).
Insert Workload
実験概要: Measures write throughput when inserting unique keys sequentially into empty/pre-populated store.
Update (Zipf) Workload
実験概要: Measures update throughput under Zipf access distribution (stateful updates).
Delete (Zipf) Workload
実験概要: Measures concurrent delete throughput (T1 index removals).
Get Miss (Zipf) Workload
実験概要: Evaluates read throughput for non-existent keys (tests Bloom Filter efficiency).
Get Hit (Zipf) Workload
実験概要: Measures point lookups for existing keys under Zipf distribution (cache-friendly).
Get Hit (Uniform) Workload
実験概要: Measures point lookups for existing keys under Uniform distribution (extreme cache misses).
Scan (No Reorg - Zipf) Workload
実験概要: Executes 100-key range queries under Zipf distribution with active append region.
Scan (No Reorg - Uniform) Workload
実験概要: Executes 100-key range queries under Uniform distribution (strict sequential prefetching).
Scan (With Reorg - Zipf) Workload
実験概要: Executes range queries after reorganize, pointing to a fully sorted in-memory region (Zipf).
Scan (With Reorg - Uniform) Workload
実験概要: Executes range queries after reorganize, pointing to a fully sorted in-memory region (Uniform).