Skip to content

Create load generator for Coder Connect #889

@ibetitsmike

Description

@ibetitsmike

From the plan:

Goal:

  • To observe how Coder handles Coder Desktop usage at scale.
User target Workspaces Clients Regions coderd replicas Provisioners
1k 300 165 3 3 60
2k 600 330 3 3 120
3k 900 495 3 4 180
10k 3000 1650 3 10 600

Infrastructure:

  • Kubernetes cluster per region, each cluster has:
    • 1/3 of workspaces.
    • 1/3 of provisioners.

Implementation:

  • Tools: scaletest create-workspaces + new custom Tailnet clients.
  • Build concurrency equal to provisioners, to minimize build load.

Scenarios:

  1. Half of the workspaces will be owned by users who own 10 workspaces. The other half will be owned by users with 1 workspace.
    • Most users will own one workspace, but we want to ensure those who own lots of workspaces don’t degrade the experience for others.

Run Sequence:

  1. Create users.
  2. All user clients connect to api/v2/tailnet.
  3. Staggered start workspaces (via build concurrency = provisioners).
  4. Wait until all updates have been received, or a reasonable timeout.
  5. Stop all running workspaces.
  6. Repeat step 3.

Key Results:

  • Latency from build start to corresponding workspace update receipt.
  • DB utilization/load during update fan out.
  • Missed updates (each client expects minimum two updates).

Other results:

  • Coder deployment + database resource utilization (incl. pprofs, Grafana Pyroscope).
  • Workspace creation success rate.
  • API response times.

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