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>
This commit is contained in:
89
scripts/sweep_mem_perf.sh
Executable file
89
scripts/sweep_mem_perf.sh
Executable file
@ -0,0 +1,89 @@
|
||||
#!/usr/bin/env bash
|
||||
# sweep_mem_perf.sh - Sweep HAKMEM memory/performance knobs and measure results
|
||||
# Usage: scripts/sweep_mem_perf.sh [tiny|mixed|both]
|
||||
|
||||
set -euo pipefail
|
||||
MODE="${1:-both}"
|
||||
|
||||
bench_tiny() {
|
||||
local REFILL_ONE=$1 SLLM=$2 TRIMMS=$3 FLUSH=$4 INT=$5
|
||||
# Throughput run (short)
|
||||
local out
|
||||
out=$(HAKMEM_TINY_REFILL_ONE_ON_MISS=$REFILL_ONE \
|
||||
HAKMEM_SLL_MULTIPLIER=$SLLM \
|
||||
HAKMEM_TINY_IDLE_TRIM_MS=$TRIMMS \
|
||||
HAKMEM_TINY_IDLE_FLUSH=$FLUSH \
|
||||
HAKMEM_INT_ENGINE=$INT \
|
||||
./bench_tiny_hot_hakmem 64 100 60000 2>/dev/null | tail -n 5)
|
||||
local thr=$(echo "$out" | awk '/Throughput/{print $2}')
|
||||
# Memory run (background)
|
||||
HAKMEM_TINY_REFILL_ONE_ON_MISS=$REFILL_ONE \
|
||||
HAKMEM_SLL_MULTIPLIER=$SLLM \
|
||||
HAKMEM_TINY_IDLE_TRIM_MS=$TRIMMS \
|
||||
HAKMEM_TINY_IDLE_FLUSH=$FLUSH \
|
||||
HAKMEM_INT_ENGINE=$INT \
|
||||
./bench_tiny_hot_hakmem 64 1000 400000000 >/dev/null 2>&1 &
|
||||
local pid=$!
|
||||
sleep 1
|
||||
local rss_kb=0 vms_kb=0
|
||||
if ps -p $pid >/dev/null 2>&1; then
|
||||
rss_kb=$(awk '/VmRSS/{print $2}' /proc/$pid/status)
|
||||
vms_kb=$(awk '/VmSize/{print $2}' /proc/$pid/status)
|
||||
kill $pid 2>/dev/null || true
|
||||
wait $pid 2>/dev/null || true
|
||||
fi
|
||||
echo "tiny,$REFILL_ONE,$SLLM,$TRIMMS,$FLUSH,$INT,$thr,$rss_kb,$vms_kb"
|
||||
}
|
||||
|
||||
bench_mixed() {
|
||||
local REFILL_ONE=$1 SLLM=$2 TRIMMS=$3 FLUSH=$4 INT=$5
|
||||
# Throughput run (short)
|
||||
local out
|
||||
out=$(HAKMEM_TINY_REFILL_ONE_ON_MISS=$REFILL_ONE \
|
||||
HAKMEM_SLL_MULTIPLIER=$SLLM \
|
||||
HAKMEM_TINY_IDLE_TRIM_MS=$TRIMMS \
|
||||
HAKMEM_TINY_IDLE_FLUSH=$FLUSH \
|
||||
HAKMEM_INT_ENGINE=$INT \
|
||||
./bench_random_mixed_hakmem 500000 400 42 2>/dev/null | tail -n 5)
|
||||
local thr=$(echo "$out" | awk '/Throughput/{print $2}')
|
||||
# Memory run (background)
|
||||
HAKMEM_TINY_REFILL_ONE_ON_MISS=$REFILL_ONE \
|
||||
HAKMEM_SLL_MULTIPLIER=$SLLM \
|
||||
HAKMEM_TINY_IDLE_TRIM_MS=$TRIMMS \
|
||||
HAKMEM_TINY_IDLE_FLUSH=$FLUSH \
|
||||
HAKMEM_INT_ENGINE=$INT \
|
||||
./bench_random_mixed_hakmem 5000000 400 42 >/dev/null 2>&1 &
|
||||
local pid=$!
|
||||
sleep 1
|
||||
local rss_kb=0 vms_kb=0
|
||||
if ps -p $pid >/dev/null 2>&1; then
|
||||
rss_kb=$(awk '/VmRSS/{print $2}' /proc/$pid/status)
|
||||
vms_kb=$(awk '/VmSize/{print $2}' /proc/$pid/status)
|
||||
kill $pid 2>/dev/null || true
|
||||
wait $pid 2>/dev/null || true
|
||||
fi
|
||||
echo "mixed,$REFILL_ONE,$SLLM,$TRIMMS,$FLUSH,$INT,$thr,$rss_kb,$vms_kb"
|
||||
}
|
||||
|
||||
echo "bench,refill_one,sll_mult,trim_ms,flush,int_engine,throughput_Mops,rss_kb,vms_kb"
|
||||
|
||||
# Sweep a small set of meaningful combos
|
||||
COMBOS=(
|
||||
"0 2 0 0 0" # baseline perf-ish
|
||||
"1 1 0 0 0" # SLL shrink only
|
||||
"1 1 200 1 1" # memory-mode core
|
||||
"1 2 0 0 0" # refill-one only
|
||||
"0 1 200 1 1" # sll shrink + idle trim
|
||||
"1 1 100 1 1" # aggressive trim
|
||||
)
|
||||
|
||||
for c in "${COMBOS[@]}"; do
|
||||
set -- $c
|
||||
if [[ "$MODE" == "tiny" || "$MODE" == "both" ]]; then
|
||||
bench_tiny "$@"
|
||||
fi
|
||||
if [[ "$MODE" == "mixed" || "$MODE" == "both" ]]; then
|
||||
bench_mixed "$@"
|
||||
fi
|
||||
done
|
||||
|
||||
Reference in New Issue
Block a user