fix(scheduler): sim resource over-commit, byte-unit display, sync job-state-at-capture

- bug-1799/1801: fix resInUse over-commit in sim replay -- sched_account_jobs's
  per-round re-derive pass now skips RECONCILING/UNAVAIL workers the same way
  core_reset_workers already does (bug-1751), closing the gap that let a
  worker's used slots exceed its own capacity across a resync replay
- bug-1804: revise scheduler-sim-eager-reconciliation spec (user-directed) so
  a captured job's job->state is set to RUN synchronously at dispatch capture,
  mirroring sched_commit_decision's normal-mode semantics (bug-1624), instead
  of deferring until its separately-recorded JOB_STATE_CHANGE event replays
- bug-1800: render bytes-valued CONSUMABLE resources (mem/swp/tmp) with the
  same human-scaled unit formatting already used for maxmem/maxswap/maxtmp
- bug-1802/1803: add then revert a break-on-ANY-event breakpoint kind after
  live feedback that it over-fires inside busy sessions; replace it with a
  prescan-based "next non-dummy session" hint in info summary instead

Full scheduler suite: 77/77 tests pass (asan profile).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01RLSNJhNoULvVcUhXEFafQC
This commit is contained in:
Rongsong Shen 2026-09-12 14:06:41 +00:00
parent ffca959ed9
commit 25fb5c115a
No known key found for this signature in database
GPG key ID: 5BCDAAE0123E9FE2
22 changed files with 1827 additions and 303 deletions

View file

@ -253,4 +253,23 @@ extern int sched_sim_driver_start(xce_sched_sim_driver_t* sim,
extern int sched_sim_driver_run(xce_sched_sim_driver_t* sim,
const sched_sim_args_t* args);
/*
* sim_prescan_next_nonempty_session - user-requested (2026-09-11): looks
* ahead in sim->replay_file (from its CURRENT read position) for the next
* ReplaySession boundary preceded by at least one real event -- i.e. the
* next "non-dummy" session -- without consuming/advancing the stream.
* `*out_sessions_ahead` is the number of session boundaries from right now
* to reach it (exactly the count `step N` needs), NOT an absolute session
* number -- this function only sees the raw replay stream, not
* xce_sched_repl_state_t's session_count (an opaque type here, fully
* defined only in repl_internal.h). repl_info.c's `info summary` adds this
* to rs->session_count itself for display, and reports the result so an
* operator can `step N` straight there instead of single-stepping through
* a run of dummy (virtual-clock-only) sessions first. See sim.c's own doc
* comment on this function for the full contract, return values, and
* scope decisions.
*/
extern int sim_prescan_next_nonempty_session(xce_sched_sim_driver_t* sim,
uint64_t* out_sessions_ahead);
#endif