GoogleCloudPlatform / GoogleCloudPlatform/PerfKitBenchmarker

Resource improvements

Open
#892 3 comments 0 reactions 0 assignees View on GitHub
enhancement P2 question
Dominant language
Python
Stars
2k
Forks
562
Avg merge
4h 55m
Merged PRs (30d)
69

Description

Tossing down some suggestions for improving how resources are handled - things that I think would be nice to have. Discussion encouraged. May be spun off into actual work items later.
1. Benchmarks can specify the type and count of resources that they need. This is similar to how benchmarks currently have a vm_groups configuration option. Instead of a VM group, it's a resource group, which can specify storage resources, managed queues, etc. Maybe a gluster cluster is a type of storage resource, which itself has configuration options defining the machine resources on which it is hosted.
2. Resources are provisioned and torn down in the provision and teardown stages, the same as VMs.
3. A summary of resources that may have failed to have been torn down correctly is printed out at the end of the teardown stage.
4. Resources are provisioned and torn down based on a dependency model. Maybe a provider's VM requires a network to be attached to at provision time, but the network can be deleted with a single command that also tears down all VMs in the network. Based on provision and teardown dependency graphs, we optimize by not issuing individual teardown requests per VM.
5. All dependencies are calculated prior to actually provisioning anything. We actually know which networks, sub-networks, VMs, disks, buckets, and topics we plan to create before any one of them has been created.
6. The creation of independent resources can be parallelized. Maybe VM A depends on network A and VM B depends on network B. If it takes a long time to create network A, no need for VM B to wait.
7. The creation of multiple resources can be synchronized or combined. Want to measure how long it takes to boot 100 VMs? The 100 provisioning commands should start at the same time. Or maybe up to 20 VMs can be provisioned at once, and the 5 commands should start at the same time.
8. Resources can be shared between benchmarks. Want to run five different benchmarks, and don't care which network the VMs belong to? Create a single network at the beginning of the provision stage, and tear it down at the end of the teardown stage.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.