Skip to content

Instantly share code, notes, and snippets.

@imjasonh
Last active October 28, 2021 05:42
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save imjasonh/d3d26f15a52a079e1e0691cced5779b4 to your computer and use it in GitHub Desktop.
Save imjasonh/d3d26f15a52a079e1e0691cced5779b4 to your computer and use it in GitHub Desktop.

Testing GCE VM suspend/resume latency

time ./suspend-test.sh  &> output.txt

tl;dr

  • COS VM create takes ~10s
  • VM delete takes ~2m20s
  • resuming a VM takes ~8-10s
  • suspending a VM takes ~20-25s

Both operations are faster than create/delete, but create vs resume is pretty close.

==== CREATE / DELETE ====
ERROR: (gcloud.compute.instances.delete) Failed to fetch some instances:
- The resource 'projects/my-project/zones/us-east4-a/instances/suspend-test' was not found
== create ==
Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east4-a/instances/suspend-test].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
suspend-test us-east4-a n1-standard-1 10.150.0.81 35.245.49.179 RUNNING
real 0m9.399s
user 0m1.105s
sys 0m0.148s
== delete ==
Deleted [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east4-a/instances/suspend-test].
real 2m18.469s
user 0m0.655s
sys 0m0.138s
== create ==
Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east4-a/instances/suspend-test].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
suspend-test us-east4-a n1-standard-1 10.150.0.82 34.86.127.112 RUNNING
real 0m9.621s
user 0m1.133s
sys 0m0.157s
== delete ==
Deleted [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east4-a/instances/suspend-test].
real 2m17.396s
user 0m0.742s
sys 0m0.170s
== create ==
Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east4-a/instances/suspend-test].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
suspend-test us-east4-a n1-standard-1 10.150.0.83 34.86.3.252 RUNNING
real 0m8.401s
user 0m1.122s
sys 0m0.175s
== delete ==
Deleted [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east4-a/instances/suspend-test].
real 2m16.187s
user 0m0.634s
sys 0m0.142s
==== SUSPEND / RESUME ====
Created [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east4-a/instances/suspend-test].
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
suspend-test us-east4-a n1-standard-1 10.150.0.84 35.221.50.255 RUNNING
== suspend ==
Suspending instance(s) suspend-test...
.......................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................done.
Updated [https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-east4-a/instances/suspend-test].
real 3m21.688s
user 0m0.690s
sys 0m0.171s
== resume ==
Resuming instance(s) suspend-test...
..........................................done.
Updated [https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-east4-a/instances/suspend-test].
real 0m10.872s
user 0m0.662s
sys 0m0.146s
== suspend ==
Suspending instance(s) suspend-test...
.......................................................................................................................................done.
Updated [https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-east4-a/instances/suspend-test].
real 0m29.373s
user 0m0.662s
sys 0m0.144s
== resume ==
Resuming instance(s) suspend-test...
...............................done.
Updated [https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-east4-a/instances/suspend-test].
real 0m8.632s
user 0m0.611s
sys 0m0.129s
== suspend ==
Suspending instance(s) suspend-test...
............................................................................................done.
Updated [https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-east4-a/instances/suspend-test].
real 0m20.651s
user 0m0.679s
sys 0m0.145s
== resume ==
Resuming instance(s) suspend-test...
..............................done.
Updated [https://compute.googleapis.com/compute/beta/projects/my-project/zones/us-east4-a/instances/suspend-test].
real 0m8.455s
user 0m0.695s
sys 0m0.151s
Deleted [https://www.googleapis.com/compute/v1/projects/my-project/zones/us-east4-a/instances/suspend-test].
#!/usr/bin/env bash
set -e
N=3
NAME=suspend-test
ZONE=us-east4-a
echo "==== CREATE / DELETE ===="
gcloud compute instances delete $NAME --zone=$ZONE --quiet --delete-disks=all || true # ignore failures
for i in $(seq 1 $N); do
echo " == create =="
time gcloud compute instances create-with-container $NAME --container-image=nginx --zone=$ZONE
echo " == delete =="
time gcloud compute instances delete $NAME --zone=$ZONE --quiet --delete-disks=all
done
echo "==== SUSPEND / RESUME ===="
gcloud compute instances create-with-container $NAME --container-image=nginx --zone=$ZONE || true # ignore failure
for i in $(seq 1 $N); do
echo " == suspend =="
time gcloud beta compute instances suspend $NAME --zone=$ZONE
echo " == resume =="
time gcloud beta compute instances resume $NAME --zone=$ZONE
done
gcloud compute instances delete $NAME --zone=$ZONE --quiet --delete-disks=all
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment