added standalone run scripts for all tests and experiments
This commit is contained in:
Executable
+48
@@ -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"
|
||||
Reference in New Issue
Block a user