oxidecomputer / oxidecomputer/omicron

self-service update speedup: update all the Crucible zones on one sled in one step

Open
#9,459 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Rust
Stars
572
Forks
97
Avg merge
2d 12h
Merged PRs (30d)
96

Description

(I think we've discussed this previously?)

Right now, the planner only updates one zone in any given zone-update step. This was easy to reason about in terms of safety and is probably fine for a long time for most zone types. But for Crucible, there's a lot to be gained by going faster. I believe there's not much extra impact or risk to updating all the Crucible zones on a single sled at once, rather than just one of them (since we don't put multiple downstairs for the same disk on the same sled). Doing so should reduce the time required for updating the Crucible zones by about 90%. Estimating about 30 seconds per Crucible zone update, this would save about 72 minutes in updating a half-rack ((30 seconds / zone) times (10 zones / sled) times (16 sleds / half-rack) times (10% (account for the improvement))).

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Use the planner's zone-update step as the entry point and trace how Crucible zones on a sled are selected. Confirm the safety assumptions in the issue, then make the completed behavior update all eligible Crucible zones on one sled in a single step while preserving the existing behavior for other zone types.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend, infrastructure
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.