From d9aaef5b7c33449fbc22b435f6acf394e8c18ca7 Mon Sep 17 00:00:00 2001 From: mischa Date: Wed, 28 Oct 2020 21:02:22 +0100 Subject: [PATCH] added staggering to startall.sh --- startall.sh | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/startall.sh b/startall.sh index 45d47a4..b4255fd 100755 --- a/startall.sh +++ b/startall.sh @@ -1,6 +1,6 @@ #!/bin/sh # -# Copyright (c) 2019 Mischa Peters +# Copyright (c) 2019-2020 Mischa Peters # # Permission to use, copy, modify, and distribute this software for any # purpose with or without fee is hereby granted, provided that the above @@ -14,4 +14,25 @@ # ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF # OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. # -vmctl show | for i in $(awk '/ - / {print $9}'); do echo ${i}; doas vmctl start $i; sleep 90; done +SLEEP=300 +CPU=$(sysctl -n hw.ncpuonline) +CPU=$((${CPU}-2)) + +COUNTER=0 +for i in $(vmctl show | sort | awk '/ - / {print $9}' | xargs); do + VMS[${COUNTER}]=${i} + COUNTER=$((${COUNTER}+1)) +done + +CYCLES=$((${#VMS[*]}/${CPU}+1)) +echo "Starting ${#VMS[*]} VMs on ${CPU} CPUs in ${CYCLES} cycle(s), waiting ${SLEEP} seconds after each cycle." + +COUNTER=0 +for i in ${VMS[*]}; do + COUNTER=$((${COUNTER}+1)) + vmctl start ${i} + if [ $COUNTER -eq $CPU ]; then + sleep ${SLEEP} + COUNTER=0 + fi +done