DF-0945 / exp3.sh
#!/bin/sh # DF-0945 focused experiment v3 — logs to persistent /root/, lighter pressure. set -u LOG=/root/df0945_exp3.log SWAP_MB="${1:-8}" STRESS_MB="${2:-3250}" RUNS="${3:-200}" VNDEV=vn1 SF=/tmp/sf.img log() { echo "$@" >> $LOG; } echo "=== DF-0945 exp3 $(date) SWAP_MB=$SWAP_MB STRESS_MB=$STRESS_MB RUNS=$RUNS ===" > $LOG swapoff /dev/$VNDEV 2>/dev/null vnconfig -u $VNDEV 2>/dev/null rm -f $SF swapoff /dev/vbd0s1b 2>/dev/null; sleep 0.5 swapon /dev/vbd0s1b; sleep 0.2 dd if=/dev/zero of=$SF bs=1m count=$SWAP_MB 2>>$LOG vnconfig -c $VNDEV $SF swapon /dev/$VNDEV; sleep 0.2 log "--- initial swap ---" swapctl -l >> $LOG 2>&1 log "--- starting stressor $STRESS_MB MB for 120s ---" su -m maxx -c "/home/maxx/poc/DF-0945/stress $STRESS_MB 120" & SP=$! log "--- waiting 25s for dirty+swap ---" sleep 25 log "--- PRE-TOGGLE swap state ---" sysctl vm.swap_anon_use vm.swap_free vm.stats.vm.v_free_count >> $LOG 2>&1 log "--- TOGGLE LOOP ($RUNS iterations) ---" i=0; ok=0; fail=0 while [ "$i" -lt "$RUNS" ]; do i=$((i + 1)) swapoff /dev/$VNDEV 2>/dev/null rc=$? case $rc in 0) ok=$((ok + 1)) ;; *) fail=$((fail + 1)) ;; esac swapon /dev/$VNDEV 2>/dev/null if [ "$((i % 20))" -eq 0 ]; then sa=$(sysctl -n vm.swap_anon_use 2>/dev/null) sf=$(sysctl -n vm.swap_free 2>/dev/null) fc=$(sysctl -n vm.stats.vm.v_free_count 2>/dev/null) log " iter=$i ok=$ok fail=$fail swap_anon=$sa swap_free=$sf free=$fc" fi done log "--- DONE: $RUNS iters ok=$ok fail=$fail ---" log "--- POST-TOGGLE ---" sysctl vm.swap_anon_use vm.swap_free vm.stats.vm.v_free_count >> $LOG 2>&1 swapctl -l >> $LOG 2>&1 kill -TERM $SP 2>/dev/null; kill -KILL $SP 2>/dev/null; wait 2>/dev/null swapoff /dev/$VNDEV 2>/dev/null; vnconfig -u $VNDEV 2>/dev/null; rm -f $SF log "=== complete $(date) ===" |