Skip to content

Create load generator for Prebuilds #914

@ethanndickson

Description

@ethanndickson

From the plan:

Goal:

  • To observe how Coder handles prebuild reconciliation at scale
User target Regions Templates Prebuilds per template Presets per template Provisioners Concurrent Reconciliations
1k 3 6 10 5 60 60
2k 3 12 10 5 120 120
3k 3 18 10 5 180 180
10k 3 60 10 5 600 600

Infrastructure:

  • Kubernetes cluster per region, each cluster has:
    • 1/3 of total prebuilds
    • 1/3 of total provisioners

Implementation:

  • Tools:
    • coder scaletest command for bulk creating templates with prebuilds
  • A baseline template
    • With a schedule to create one prebuild instance, and then shortly after, destroy it.
  • Multiple templates, each:
    • With a schedule to create all prebuilds instances at the same time
    • With a schedule to delete all prebuild instances at the same time
    • With presets to spread the resulting prebuilds across regions

Run Sequence:

  1. Create a user
  2. Determine a start time and an expiration time for all prebuilds, in the near future.
  3. Create all templates
  4. Await baseline creation time & baseline expiry time.
  5. Await mass-creation time
  6. Await mass-expiry time

Key Results

  • How quickly the jobs get created.
  • How quickly they get queued.
  • How long it takes for all workspaces to be built.
  • How long it takes for a workspace to be built, relative to the baseline.

Other Results:

  • Coder deployment + database resource utilisation (incl. pprofs, Grafana Pyroscope)

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions