docs(specs): discovery for layered job configuration (queue/app/project)
New briefs: job-config-merge (one live merge of job, application profile, queue policy and project into effective values; simplified rules: job overrides profile, select ANDed, queue hard/task limits reject; queue is policy only, res_req deprecated), project-config (project quotas v1) and project-guarantee (backlog). application-profile: the profile carries the job's resreq (incl. span) and task limits; "frozen at submit" replaced by the live merge. parjob-placement: span constraints live in the fixed-N planner and the range search bisects over the planner's allowed counts; LSF 10.1 block, ptile, stripe and HOSTLIMIT_PER_JOB findings recorded. Roadmap: new specs, existing-spec updates, lsf-config-migration backlog. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
a219419e59
commit
b761878b58
6 changed files with 341 additions and 2 deletions
54
.kiro/specs/project-guarantee/brief.md
Normal file
54
.kiro/specs/project-guarantee/brief.md
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
# Brief: project-guarantee
|
||||
|
||||
(`/kiro-discovery`, 2026-10-09, Path E "configuration layering". Backlog:
|
||||
not started until `project-config` and `scheduler-preemption` land.)
|
||||
|
||||
## Problem
|
||||
With `project-config`, projects can only be capped. Owners of a project (a
|
||||
group that funded hardware, a department with a committed share) need a
|
||||
**guarantee**: a minimum share or a pool of resources they get when they ask
|
||||
for it, while idle capacity is still lent to others.
|
||||
|
||||
## Current State
|
||||
- No guarantee, share or pool concept exists; fairshare is in the queue YAML
|
||||
schema only and dropped by `xceadmin` (`mapping.py:80-97`).
|
||||
- Preemption is specified but not implemented (`scheduler-preemption`,
|
||||
requirements generated).
|
||||
|
||||
## Desired Outcome
|
||||
- A project can own a guarantee: a resource amount (slots, hosts or any
|
||||
resource) or a pool of hosts.
|
||||
- Idle guaranteed capacity may be borrowed by other projects' jobs.
|
||||
- When an owner's pending job needs its guarantee back, borrowers are
|
||||
reclaimed (preempted, requeued or allowed to finish, by policy).
|
||||
- Guarantee state and borrowing are visible (REST, `xcecli`, REPL).
|
||||
|
||||
## Approach
|
||||
To be chosen in discovery when the spec starts. Candidates: LSF-style
|
||||
guarantee service classes (`lsb.resources` GuaranteedResourcePool), or
|
||||
guarantees as reserved virtual resources built on the limit/vres machinery
|
||||
plus preemption.
|
||||
|
||||
## Scope
|
||||
- **In**: guarantee model, borrowing, reclaim policy, visibility.
|
||||
- **Out**: quotas (`project-config`), fairshare ordering, accounting/billing.
|
||||
|
||||
## Boundary Candidates
|
||||
- Guarantee model and config.
|
||||
- Scheduler accounting of owned vs borrowed usage.
|
||||
- Reclaim through `scheduler-preemption`.
|
||||
|
||||
## Out of Boundary
|
||||
- Project definitions and membership (`project-config`).
|
||||
|
||||
## Upstream / Downstream
|
||||
- **Upstream**: `project-config`, `scheduler-preemption`, `job-config-merge`.
|
||||
- **Downstream**: `lsf-config-migration` (guarantee pools).
|
||||
|
||||
## Existing Spec Touchpoints
|
||||
- **Extends**: none.
|
||||
- **Adjacent**: `scheduler-preemption`, `resource-distribution-mapping`.
|
||||
|
||||
## Constraints
|
||||
- Scheduler driver equivalence (live and simulator identical).
|
||||
- Touches scheduling policy and HA state: full 3-phase workflow.
|
||||
Loading…
Add table
Add a link
Reference in a new issue