mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-12 16:16:55 +00:00
62 lines
2.3 KiB
Markdown
62 lines
2.3 KiB
Markdown
# Workload Admission Contracts
|
|
|
|
This document records the `rustfs/backlog#660` PR-05 and PR-07 scheduler
|
|
preservation and runtime workload-class contract slice.
|
|
|
|
## Preservation Coverage
|
|
|
|
The `rustfs-concurrency` tests pin the current reusable scheduler and
|
|
admission-facing behavior before later snapshot extraction:
|
|
|
|
- Worker slot over-release remains clamped by the configured worker limit.
|
|
- Scheduler default buffer and priority thresholds remain unchanged.
|
|
- Scheduler priority boundaries remain high below the high threshold, normal at
|
|
both thresholds, and low above the low threshold.
|
|
- Backpressure pipe metadata reads preserve buffer capacity and state without
|
|
mutating the manager state.
|
|
- `GetObjectQueueSnapshot` preserves saturated, over-available, and zero-total
|
|
permit semantics.
|
|
|
|
## Workload Class Contract
|
|
|
|
`WorkloadClass` defines the required future admission categories:
|
|
|
|
- Foreground read.
|
|
- Foreground write.
|
|
- Metadata.
|
|
- Scanner.
|
|
- Repair.
|
|
- Replication.
|
|
|
|
`AdmissionState`, `WorkloadAdmissionSnapshot`, and
|
|
`WorkloadAdmissionRegistrySnapshot` define read-only status shapes for later
|
|
runtime owners. They do not replace the current scheduler, request guard,
|
|
scanner, heal, replication, or ECStore placement behavior.
|
|
|
|
## Boundary Rules
|
|
|
|
- `rustfs-concurrency` owns this reusable contract surface.
|
|
- The contract does not depend on `rustfs-ecstore` or RustFS binary runtime
|
|
state.
|
|
- No scheduler decision logic, queue capacity, Tokio runtime default, scanner
|
|
admission, heal admission, replication admission, placement, membership, or
|
|
NUMA behavior changes are part of this slice.
|
|
|
|
## Set-Local Snapshot Extraction
|
|
|
|
The RustFS storage `ConcurrencyManager` now implements
|
|
`WorkloadAdmissionSnapshotProvider` for local foreground-read admission:
|
|
|
|
- `ForegroundRead` reports local disk-read permit usage through
|
|
`GetObjectQueueSnapshot`.
|
|
- `active` is the number of disk-read permits currently in use.
|
|
- `limit` is the configured maximum concurrent disk reads.
|
|
- `queued` remains `None` because the current semaphore does not expose waiter
|
|
counts.
|
|
- Scanner, repair, replication, foreground write, and metadata entries remain
|
|
`Unknown` until their owning runtime components expose read-only status.
|
|
|
|
This is an observation surface only. Permit acquisition, priority assignment,
|
|
buffer sizing, storage media detection, request guards, and queue behavior are
|
|
unchanged.
|