Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save grahamwhaley/684b424374a3f4d5417d5fe9972fb68c to your computer and use it in GitHub Desktop.
Save grahamwhaley/684b424374a3f4d5417d5fe9972fb68c to your computer and use it in GitHub Desktop.
Simple script to measure cpu load with perf whilst running a bandwidth limited VM network test
#!/bin/bash
# Very simple test script to see if we can measure 'cpu utilisation' stably whilst running a bandwidth limited
# network test - across two VM containers.
#set -x
RUNTIME=kata-runtime
C1NAME=fred
C2NAME=john
BANDWIDTH="1G"
TIMEOUT="70"
SAMPLE_PERIOD=60
CONTAINER="gabyct/network"
C1CMD="export TMPDIR=/dev/shm; iperf3 -s"
# use func call to delay var expansion
fillcmd2() {
C2CMD="export TMPDIR=/dev/shm; iperf3 -c $server_address -b $BANDWIDTH -t $TIMEOUT"
}
docker stop $C1NAME $C2NAME
docker rm $C1NAME $C2NAME
docker run --runtime $RUNTIME --name $C1NAME -d $CONTAINER bash -c "$C1CMD"
server_address=$(docker inspect --format "{{.NetworkSettings.IPAddress}}" $C1NAME)
fillcmd2
docker run --runtime $RUNTIME --name $C2NAME -d $CONTAINER bash -c "$C2CMD"
docker ps
# let things get going
sleep 5
PIDS="$(pgrep -d ',' qemu)"
#PIDARGS="$(echo " ${PIDS}" | sed 's/ / -p /g')"
sudo perf stat -x, -e cycles -e instructions -p ${PIDS} sleep ${SAMPLE_PERIOD}
#sudo perf stat -p ${PIDS} sleep ${SAMPLE_PERIOD}
docker stop $C1NAME $C2NAME
docker rm $C1NAME $C2NAME
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment