wave15: v8-0002/0003 Intl+revectorizer (125x/25x) + bullet/box2d ticket files — 528/240

This commit is contained in:
russell@unturf.com 2026-03-27 19:16:28 -04:00
parent c4026333ba
commit 7146714143
13 changed files with 1520 additions and 11 deletions

View file

@ -66,6 +66,52 @@ JAVA=/tmp/jdk25/bin/java
LOG="$DIR/bench.log"
FIFO="$DIR/server.stdin"
# ── System metrics helpers ────────────────────────────────────────────────────
# cpu_snap: echo "user nice sys irq softirq intr" from /proc/stat
cpu_snap() {
local cpu intr
read -r cpu user nice sys idle iowait irq softirq steal guest gnest < /proc/stat
intr=$(awk '/^intr / {print $2}' /proc/stat)
echo "$user $nice $sys $irq $softirq $intr"
}
# cpu_delta <snap_before> <snap_after> <elapsed_ms> → prints table row
# Computes jiffies burned per field; divides by total to get %.
# /proc/stat ticks at CONFIG_HZ (usually 100 Hz).
cpu_delta() {
local before="$1" after="$2" elapsed_ms="$3"
read -r bu bn bs br bsoft bi <<< "$before"
read -r au an as_ ar asoft ai <<< "$after"
local du=$(( au - bu ))
local dn=$(( an - bn ))
local ds=$(( as_ - bs ))
local dr=$(( ar - br ))
local dsoft=$(( asoft - bsoft ))
local dintr=$(( ai - bi ))
local total=$(( du + dn + ds + dr + dsoft ))
if [ "$total" -gt 0 ]; then
awk -v u=$du -v n=$dn -v s=$ds -v r=$dr -v soft=$dsoft -v intr=$dintr \
-v tot=$total -v ms=$elapsed_ms 'BEGIN {
printf " cpu user=%.1f%% nice=%.1f%% sys=%.1f%% irq=%.1f%% sirq=%.1f%% intr=%d (over %dms)\n",
u/tot*100, n/tot*100, s/tot*100, (r+soft)/tot*100, 0, intr, ms
}'
else
echo " cpu (no delta)"
fi
}
# mem_snap: echo free_mb available_mb from /proc/meminfo
mem_snap() {
awk '/^MemFree:/{f=$2}/^MemAvailable:/{a=$2} END{printf "%d %d", f/1024, a/1024}' /proc/meminfo
}
# Print and store a labelled memory reading
mem_print() {
local label="$1" snap="$2"
read -r free_mb avail_mb <<< "$snap"
echo " mem free=${free_mb}MB available=${avail_mb}MB ($label)"
}
pkill -f "port $PORT " 2>/dev/null || true
sleep 1
rm -f "$LOG" "$FIFO"
@ -85,6 +131,8 @@ echo ""
# ── §1 Startup ────────────────────────────────────────────────────────────────
echo "§1 Starting server..."
CPU_BEFORE_STARTUP=$(cpu_snap)
MEM_BEFORE_STARTUP=$(mem_snap)
START_MS=$(date +%s%3N)
exec 3<>"$FIFO"
@ -101,9 +149,14 @@ for i in $(seq 1 180); do
sleep 1
if grep -q "Done (" "$LOG" 2>/dev/null; then
STARTUP_MS=$(( $(date +%s%3N) - START_MS ))
CPU_AFTER_STARTUP=$(cpu_snap)
MEM_AFTER_STARTUP=$(mem_snap)
DONE_LINE=$(grep "Done (" "$LOG" | tail -1)
echo " startup: ${STARTUP_MS} ms"
echo " server: $DONE_LINE"
cpu_delta "$CPU_BEFORE_STARTUP" "$CPU_AFTER_STARTUP" "$STARTUP_MS"
mem_print "before" "$MEM_BEFORE_STARTUP"
mem_print "after" "$MEM_AFTER_STARTUP"
break
fi
if ! kill -0 $SERVER_PID 2>/dev/null; then
@ -133,6 +186,8 @@ echo ""
echo "§3 /reload timing..."
RELOAD_LINE=$(wc -l < "$LOG")
CPU_BEFORE_RELOAD=$(cpu_snap)
MEM_BEFORE_RELOAD=$(mem_snap)
RELOAD_START=$(date +%s%3N)
python3 "$SCRIPT_DIR/rcon.py" localhost "$RCON" benchpass "reload" 2>&1 || \
@ -143,12 +198,17 @@ for i in $(seq 1 180); do
sleep 1
if tail -n +"$RELOAD_LINE" "$LOG" 2>/dev/null | grep -qE "Loaded [0-9]+ recipes"; then
RELOAD_MS=$(( $(date +%s%3N) - RELOAD_START ))
CPU_AFTER_RELOAD=$(cpu_snap)
MEM_AFTER_RELOAD=$(mem_snap)
echo " /reload: ${RELOAD_MS} ms"
tail -n +"$RELOAD_LINE" "$LOG" | grep -E "Loaded [0-9]+ (recipes|advancements)" | head -3 | while IFS= read -r l; do echo " $l"; done
cpu_delta "$CPU_BEFORE_RELOAD" "$CPU_AFTER_RELOAD" "$RELOAD_MS"
mem_print "before" "$MEM_BEFORE_RELOAD"
mem_print "after" "$MEM_AFTER_RELOAD"
break
fi
done
[ -z "$RELOAD_MS" ] && { echo " /reload: did not complete in 180s"; RELOAD_MS="-1"; }
[ -z "$RELOAD_MS" ] && { echo " /reload: did not complete in 180s"; RELOAD_MS="-1"; CPU_AFTER_RELOAD=$(cpu_snap); MEM_AFTER_RELOAD=$(mem_snap); }
# ── §4 Second bot wave (post-reload) ─────────────────────────────────────────
echo ""
@ -185,6 +245,27 @@ wait $SERVER_PID 2>/dev/null || true
rm -f "$FIFO"
# ── Results ──────────────────────────────────────────────────────────────────
# Derive per-phase CPU/mem deltas for results.txt (machine-readable)
_cpu_fields() {
local before="$1" after="$2"
read -r bu bn bs br bsoft bi <<< "$before"
read -r au an as_ ar asoft ai <<< "$after"
local du=$(( au-bu )) dn=$(( an-bn )) ds=$(( as_-bs ))
local dr=$(( ar-br )) dsoft=$(( asoft-bsoft )) dintr=$(( ai-bi ))
local tot=$(( du+dn+ds+dr+dsoft ))
[ "$tot" -eq 0 ] && tot=1
awk -v u=$du -v n=$dn -v s=$ds -v r=$dr -v soft=$dsoft -v intr=$dintr -v tot=$tot \
-v pfx="$3" 'BEGIN {
printf "%scpu_user_pct=%.1f\n%scpu_nice_pct=%.1f\n%scpu_sys_pct=%.1f\n%scpu_irq_pct=%.1f\n%scpu_intr=%d\n",
pfx, u/tot*100, pfx, n/tot*100, pfx, s/tot*100, pfx, (r+soft)/tot*100, pfx, intr
}'
}
_mem_fields() {
read -r free_mb avail_mb <<< "$(mem_snap)"
echo "${1}mem_free_mb=$free_mb"
echo "${1}mem_avail_mb=$avail_mb"
}
echo ""
echo "=========================================="
echo " $TIER RESULTS"
@ -194,7 +275,18 @@ echo " reload: ${RELOAD_MS} ms"
echo " bots: $BOTS"
echo " depth: $DATAPACK_DEPTH ns: $DATAPACK_NS xrefs: $DATAPACK_XREFS"
echo ""
cat > "$DIR/results.txt" << EOF
echo " --- CPU/mem during startup ---"
cpu_delta "$CPU_BEFORE_STARTUP" "$CPU_AFTER_STARTUP" "$STARTUP_MS"
mem_print "before" "$MEM_BEFORE_STARTUP"
mem_print "after" "$MEM_AFTER_STARTUP"
echo " --- CPU/mem during /reload ---"
cpu_delta "$CPU_BEFORE_RELOAD" "$CPU_AFTER_RELOAD" "$RELOAD_MS"
mem_print "before" "$MEM_BEFORE_RELOAD"
mem_print "after" "$MEM_AFTER_RELOAD"
echo ""
{
cat << EOF
label=$TIER
startup_ms=$STARTUP_MS
reload_ms=$RELOAD_MS
@ -203,3 +295,11 @@ datapack_depth=$DATAPACK_DEPTH
datapack_ns=$DATAPACK_NS
datapack_xrefs=$DATAPACK_XREFS
EOF
_cpu_fields "$CPU_BEFORE_STARTUP" "$CPU_AFTER_STARTUP" "startup_"
_mem_fields "startup_before_"
read -r f a <<< "$MEM_BEFORE_STARTUP"; echo "startup_before_mem_free_mb=$f"; echo "startup_before_mem_avail_mb=$a"
read -r f a <<< "$MEM_AFTER_STARTUP"; echo "startup_after_mem_free_mb=$f"; echo "startup_after_mem_avail_mb=$a"
_cpu_fields "$CPU_BEFORE_RELOAD" "$CPU_AFTER_RELOAD" "reload_"
read -r f a <<< "$MEM_BEFORE_RELOAD"; echo "reload_before_mem_free_mb=$f"; echo "reload_before_mem_avail_mb=$a"
read -r f a <<< "$MEM_AFTER_RELOAD"; echo "reload_after_mem_free_mb=$f"; echo "reload_after_mem_avail_mb=$a"
} > "$DIR/results.txt"