Phase SO-BACKEND-OPT-1: v3 backend 分解&Tiny/ULTRA 完成世代宣言
=== 実装内容 === 1. v3 backend 詳細計測 - ENV: HAKMEM_SO_V3_STATS で alloc/free パス内訳計測 - 追加 stats: alloc_current_hit, alloc_partial_hit, free_current, free_partial, free_retire - so_alloc_fast / so_free_fast に埋め込み - デストラクタで [ALLOC_DETAIL] / [FREE_DETAIL] 出力 2. v3 backend ボトルネック分析完了 - C7-only: alloc_current_hit=99.99%, alloc_refill=0.9%, free_retire=0.1%, page_of_fail=0 - Mixed: alloc_current_hit=100%, alloc_refill=0.85%, free_retire=0.07%, page_of_fail=0 - 結論: v3 ロジック部分(ページ選択・retire)は完全最適化済み - 残り 5% overhead は内部コスト(header write, memcpy, 分岐) 3. Tiny/ULTRA 層「完成世代」宣言 - 総括ドキュメント作成: docs/analysis/PERF_EXEC_SUMMARY_ULTRA_PHASE_20251211.md - CURRENT_TASK.md に Phase ULTRA 総括セクション追加 - AGENTS.md に Tiny/ULTRA 完成世代宣言追加 - 最終成果: Mixed 16–1024B = 43.9M ops/s (baseline 30.6M → +43.5%) === ボトルネック地図 === | 層 | 関数 | overhead | |-----|------|----------| | Front | malloc/free dispatcher | ~40–45% | | ULTRA | C4–C7 alloc/free/refill | ~12% | | v3 backend | so_alloc/so_free | ~5% | | mid/pool | hak_super_lookup | 3–5% | === フェーズ履歴(Phase ULTRA cycle) === - Phase PERF-ULTRA-FREE-OPT-1: C4–C7 ULTRA統合 → +9.3% - Phase REFACTOR: Code quality (60行削減) - Phase PERF-ULTRA-REFILL-OPT-1a/1b: C7 ULTRA refill最適化 → +11.1% - Phase SO-BACKEND-OPT-1: v3 backend分解 → 設計限界確認 === 次フェーズ(独立ライン) === 1. Phase SO-BACKEND-OPT-2: v3 header write削減 (1-2%) 2. Headerless/v6系: out-of-band header (1-2%) 3. mid/pool v3新設計: C6-heavy 10M → 20–25M 本フェーズでTiny/ULTRA層は「完成世代」として基盤固定。 今後の大きい変更はHeaderless/mid系の独立ラインで検討。 🤖 Generated with Claude Code Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -53,8 +53,13 @@ typedef struct so_stats_class_v3 {
|
||||
_Atomic uint64_t alloc_calls;
|
||||
_Atomic uint64_t alloc_refill;
|
||||
_Atomic uint64_t alloc_fallback_v1;
|
||||
_Atomic uint64_t alloc_current_hit; // fast path: current から pop
|
||||
_Atomic uint64_t alloc_partial_hit; // fast path: partial から pop
|
||||
_Atomic uint64_t free_calls;
|
||||
_Atomic uint64_t free_fallback_v1;
|
||||
_Atomic uint64_t free_current; // fast path: current に push
|
||||
_Atomic uint64_t free_partial; // fast path: partial に push
|
||||
_Atomic uint64_t free_retire; // slow path: retire
|
||||
_Atomic uint64_t page_of_fail;
|
||||
} so_stats_class_v3;
|
||||
|
||||
@ -64,8 +69,13 @@ void so_v3_record_route_hit(uint8_t ci);
|
||||
void so_v3_record_alloc_call(uint8_t ci);
|
||||
void so_v3_record_alloc_refill(uint8_t ci);
|
||||
void so_v3_record_alloc_fallback(uint8_t ci);
|
||||
void so_v3_record_alloc_current_hit(uint8_t ci);
|
||||
void so_v3_record_alloc_partial_hit(uint8_t ci);
|
||||
void so_v3_record_free_call(uint8_t ci);
|
||||
void so_v3_record_free_fallback(uint8_t ci);
|
||||
void so_v3_record_free_current(uint8_t ci);
|
||||
void so_v3_record_free_partial(uint8_t ci);
|
||||
void so_v3_record_free_retire(uint8_t ci);
|
||||
void so_v3_record_page_of_fail(uint8_t ci);
|
||||
|
||||
// TLS accessor (core/smallobject_hotbox_v3.c)
|
||||
|
||||
Reference in New Issue
Block a user