oxidecomputer / oxidecomputer/propolis

want instrumentation/"get my state" methods for Propolis entities

Open
#482 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Rust
Stars
270
Forks
42
Avg merge
4d 5h
Merged PRs (30d)
6

Description

Sometimes when debugging live Propolises we'd like to be able to examine the contents of an entity's data structures (e.g. NVMe or Crucible upstairs queues) even when the entity is stuck or otherwise at rest (such that it won't cross any USDT probes or log lines in the course of its continued operation).

One possible way to do this:

  • add a trace function to the Entity trait
  • each implementation takes locks, examines internal data structures, etc. and logs output and/or fires USDT probes to describe the current state of the system
  • Propolis server exposes an API endpoint that visits each entity in turn and calls the tracing callback

The user can then specify which probes to enable, what filtering rules to apply when reading the logs, etc. to get only information from the relevant entities or subsystems.

An alternative approach is to let the user specify exactly which entities should get tracing callbacks. This cuts runtime expenses (no visiting entities you don't care about) in exchange for forcing users to understand how entities were named.

Contributor guide

No contributing guide indexed for this repository

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

Start by reading the Entity trait, its implementations, and the Propolis server API surface mentioned in the issue. Compare the proposed all-entity callback with targeting specific entities, then define the interface and endpoint behavior. Done means the approach is agreed and current entity state can be inspected through the chosen instrumentation path.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
backend-api-design, observability, operating-systems
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.