This commit introduces a comprehensive tracing mechanism for allocation failures within the Adaptive Cache Engine (ACE) component. This feature allows for precise identification of the root cause for Out-Of-Memory (OOM) issues related to ACE allocations. Key changes include: - **ACE Tracing Implementation**: - Added environment variable to enable/disable detailed logging of allocation failures. - Instrumented , , and to distinguish between "Threshold" (size class mismatch), "Exhaustion" (pool depletion), and "MapFail" (OS memory allocation failure). - **Build System Fixes**: - Corrected to ensure is properly linked into , resolving an error. - **LD_PRELOAD Wrapper Adjustments**: - Investigated and understood the wrapper's behavior under , particularly its interaction with and checks. - Enabled debugging flags for environment to prevent unintended fallbacks to 's for non-tiny allocations, allowing comprehensive testing of the allocator. - **Debugging & Verification**: - Introduced temporary verbose logging to pinpoint execution flow issues within interception and routing. These temporary logs have been removed. - Created to facilitate testing of the tracing features. This feature will significantly aid in diagnosing and resolving allocation-related OOM issues in by providing clear insights into the failure pathways.
Benchmarks Catalog
このディレクトリのベンチを用途別に整理しました。各ベンチは System/mimalloc/HAKMEM(直リンク or LD_PRELOAD)の三者比較、もしくは HAKMEM の A/B(環境変数)を想定しています。
ベンチ種類(バイナリ)
-
Tiny Hot(8–64B、ホットパス/LIFO)
benchmarks/src/tiny/bench_tiny_hot.c- バイナリ:
bench_tiny_hot_system,bench_tiny_hot_hakmem,bench_tiny_hot_mi - 例:
./bench_tiny_hot_hakmem 64 100 60000
-
Random Mixed(16–1024B、単体)
- バイナリ:
bench_random_mixed_system,bench_random_mixed_hakmem - 例:
./bench_random_mixed_hakmem 400000 8192 123
- バイナリ:
-
Mid/Large MT(8–32KiB、マルチスレッド)
- バイナリ:
bench_mid_large_mt_system,bench_mid_large_mt_hakmem - 例:
./bench_mid_large_mt_hakmem 4 40000 2048 42
- バイナリ:
-
VM Mixed(512KB–<2MB、L2.5/L2 の再利用確認)
- バイナリ:
bench_vm_mixed_system,bench_vm_mixed_hakmem - 例:
HAKMEM_BIGCACHE_L25=1 HAKMEM_WRAP_TINY=1 ./bench_vm_mixed_hakmem 20000 256 4242
- バイナリ:
-
Larson(8–128B、mimalloc-bench 派生)
- バイナリ:
larson_system,larson_mi,larson_hakmem - 例:
./larson_hakmem 2 8 128 1024 1 12345 4
- バイナリ:
-
Redis-like(16–1024B、アプリ風)
- バイナリ:
benchmarks/redis/workload_bench_system - 直リンク: System のみ。mimalloc/HAKMEM は LD_PRELOAD で比較(HAKMEM は安定化中)。
- バイナリ:
マトリクス実行(CSV保存)
-
Random Mixed(直リンク)
benchmarks/scripts/run_random_mixed_matrix.sh [cycles] [ws] [reps]- 出力:
bench_results/auto/random_mixed_<ts>/results.csv
-
Mid/Large MT(直リンク)
benchmarks/scripts/run_mid_large_mt_matrix.sh [threads_csv] [cycles] [ws] [reps]- 出力:
bench_results/auto/mid_large_mt_<ts>/results.csv
-
VM Mixed(L2.5/L2、HAKMEMのL25 A/B)
benchmarks/scripts/run_vm_mixed_matrix.sh [cycles] [ws] [reps]- 出力:
bench_results/auto/vm_mixed_<ts>/results.csv
-
Larson(補助)
scripts/run_larson.sh(直リンク triad)、scripts/run_larson_claude.sh(環境プリセット付き)
代表的な環境変数
- HAKMEM_WRAP_TINY=1 → HAKMEM/Tiny を有効化(直リンクベンチ)
- HAKMEM_TINY_READY=0/1 → Ready List(refill最適化)
- HAKMEM_TINY_SS_ADOPT=0/1 → publish→adopt 経路
- HAKMEM_BIGCACHE_L25=0/1 → L2.5(512KB–<2MB)を BigCache にも載せる(A/B)
参考出力(短時間ランの目安)
- 直近の短ランのスナップショットは
benchmarks/RESULTS_SNAPSHOT.mdを参照してください。正式な比較は各マトリクススクリプトで reps=5/10・長時間ラン(例: 10s)を推奨します。