added standalone run scripts for all tests and experiments

This commit is contained in:
2026-05-28 23:40:52 +03:00
parent 1813b15993
commit 32d3d5f97c
3 changed files with 320 additions and 82 deletions
+48
View File
@@ -0,0 +1,48 @@
#!/usr/bin/env bash
set -euo pipefail
LC_ALL=C
DIR=$(cd "$(dirname "$0")" && pwd)
cd "$DIR"
gcc -O2 -o fork_bomb fork_bomb.c
echo "Compiled fork_bomb"
# This experiment is dangerous: it forks processes until the OS limit is hit.
# You MUST set ALLOW_DANGEROUS=1 to run it.
ALLOW_DANGEROUS=${ALLOW_DANGEROUS:-0}
FORK_BOMB_SECONDS=${FORK_BOMB_SECONDS:-5}
PROC_SAMPLE_STEP=${PROC_SAMPLE_STEP:-50}
RUNS_DIR="$DIR/runs"
mkdir -p "$RUNS_DIR"
RUN_ID=$(date +"%Y%m%d_%H%M%S")
OUT_CSV="$RUNS_DIR/${RUN_ID}_fork_bomb.csv"
if [ "$ALLOW_DANGEROUS" -ne 1 ]; then
echo "Skipping fork_bomb (set ALLOW_DANGEROUS=1 to run)"
echo "timestamp,elapsed_s,load1,load5,load15,mem_total_kb,mem_available_kb,mem_used_kb,proc_count,thread_count_total,pid,cpu_pct,sys_cpu_pct,forks_per_sec,rss_kb,vsz_kb,stack_kb,heap_kb,proc_threads" > "$OUT_CSV"
echo " csv: $OUT_CSV"
exit 0
fi
echo "Running fork_bomb for ${FORK_BOMB_SECONDS}s (PROC_SAMPLE_STEP=$PROC_SAMPLE_STEP)"
echo " csv: $OUT_CSV"
if command -v timeout >/dev/null 2>&1; then
timeout "$FORK_BOMB_SECONDS" sh -c "FORK_BOMB_CSV='$OUT_CSV' PROC_SAMPLE_STEP='$PROC_SAMPLE_STEP' '$DIR/fork_bomb'" || true
else
FORK_BOMB_CSV="$OUT_CSV" PROC_SAMPLE_STEP="$PROC_SAMPLE_STEP" ./fork_bomb &
FB_PID=$!
sleep "$FORK_BOMB_SECONDS" || true
kill -TERM "-$FB_PID" 2>/dev/null || true
sleep 2
kill -KILL "-$FB_PID" 2>/dev/null || true
fi
pkill -f "./fork_bomb" 2>/dev/null || true
echo "Run complete"
echo " csv: $OUT_CSV"