|
|
0d42913efe
|
Fix 1KB-8KB allocation gap: Close Tiny/Mid boundary
Problem: 1024B allocations fell through to mmap (1000x slowdown)
- TINY_MAX_SIZE: 1023B (C7 usable size with 1-byte header)
- MID_MIN_SIZE: 8KB (was too large)
- Gap: 1KB-8KB → no allocator handled → mmap fallback → syscall hell
Solution: Lower MID_MIN_SIZE to 1KB (ChatGPT recommendation)
- Tiny: 0-1023B (header-based, C7 usable=1023B)
- Mid: 1KB-32KB (closes gap, uses 8KB class for sub-8KB sizes)
- Pool: 8KB-52KB (parallel, Pool takes priority)
Results (bench_fixed_size 1024B, workset=128, 200K iterations):
- Before: 82K ops/s (mmap flood: 1000+ syscalls/iter)
- After: 489K ops/s (Mid allocator: ~30 mmap total)
- Improvement: 6.0x faster ✅
- No hang: Completes in 0.4s (was timing out) ✅
Syscall reduction (1000 iterations):
- mmap: 1029 → 30 (-97%) ✅
- munmap: 1003 → 3 (-99%) ✅
- mincore: 1000 → 1000 (unchanged, separate issue)
Related: Phase 13-A (TinyHeapV2), workset=128 debug investigation
🤝 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-15 05:51:58 +09:00 |
|
|
|
52386401b3
|
Debug Counters Implementation - Clean History
Major Features:
- Debug counter infrastructure for Refill Stage tracking
- Free Pipeline counters (ss_local, ss_remote, tls_sll)
- Diagnostic counters for early return analysis
- Unified larson.sh benchmark runner with profiles
- Phase 6-3 regression analysis documentation
Bug Fixes:
- Fix SuperSlab disabled by default (HAKMEM_TINY_USE_SUPERSLAB)
- Fix profile variable naming consistency
- Add .gitignore patterns for large files
Performance:
- Phase 6-3: 4.79 M ops/s (has OOM risk)
- With SuperSlab: 3.13 M ops/s (+19% improvement)
This is a clean repository without large log files.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-05 12:31:14 +09:00 |
|