summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authormischa <mischa@rx.high5.nl>2020-10-28 21:02:22 +0100
committermischa <mischa@rx.high5.nl>2020-10-28 21:02:22 +0100
commitd9aaef5b7c33449fbc22b435f6acf394e8c18ca7 (patch)
treee80a06a0ff8a21a1b9e7cf24331e7a2d33347938
parentf0ec6377a2ce34553a1daff1373350ec1771ac73 (diff)
added staggering to startall.sh
-rwxr-xr-xstartall.sh25
1 files 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 <mischa @ openbsd.amsterdam>
+# Copyright (c) 2019-2020 Mischa Peters <mischa @ openbsd.amsterdam>
#
# 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