docs(headless): record K4 telemetry checkpoint
This commit is contained in:
parent
cb512fd091
commit
93c6c54220
7 changed files with 197 additions and 14 deletions
|
|
@ -0,0 +1,115 @@
|
|||
# Slice K4 resource telemetry checkpoint
|
||||
|
||||
**Date:** 2026-07-27
|
||||
**Status:** Instrumentation and CPU-wakeup correction complete; fixed-binary
|
||||
connected baselines remain active
|
||||
**Production commit:** `cb512fd0`
|
||||
|
||||
## Outcome
|
||||
|
||||
The Linux headless process now emits one structured resource sample at
|
||||
startup, every 30 seconds, before scheduler stop, and after terminal disposal.
|
||||
Sampling is driven by the existing process scheduler's absolute deadline. It
|
||||
does not add a worker, timer, or callback per session.
|
||||
|
||||
Each sample reports:
|
||||
|
||||
- working set, private bytes, virtual bytes, total CPU time, interval CPU as
|
||||
both core-equivalent and machine-normalized percentages;
|
||||
- managed live, heap, fragmentation, committed and allocated bytes, memory
|
||||
load, GC pause percentage, and generation counts;
|
||||
- process thread/handle counts and Linux file/socket descriptors;
|
||||
- configured, in-world, faulted, reconnecting, and converged Runtime roots,
|
||||
entity/inventory totals, and exact host-lease count;
|
||||
- scheduler waits, turns, catch-up collapses, late-deadline count, mean and
|
||||
maximum lateness;
|
||||
- shared-content lease count, mapped virtual bytes, disposal state, and final
|
||||
convergence.
|
||||
|
||||
No account password or credential reference is included in this schema.
|
||||
|
||||
## Two-account connected evidence
|
||||
|
||||
One native Linux process connected the two locally available accounts:
|
||||
|
||||
- `testaccount` / `+Acdream`
|
||||
- `testaccount2` / `+Horan`
|
||||
|
||||
Both entered Rynthid and maintained independent Runtime roots and movement.
|
||||
The user asked that this process stay running for the retail-observer gate.
|
||||
|
||||
The first process sample after both world entries reported:
|
||||
|
||||
| Metric | Value |
|
||||
|---|---:|
|
||||
| private bytes | 207,966,208 |
|
||||
| working set | 191,553,536 |
|
||||
| managed live bytes | 71,108,368 |
|
||||
| threads | 16 |
|
||||
| handles | 115 |
|
||||
| Linux descriptors | 114 |
|
||||
| socket descriptors | 3 |
|
||||
| shared content leases | 2 |
|
||||
| mapped package virtual bytes | 29,908,271,024 |
|
||||
|
||||
The roughly 29.9 GB mapped-package value is address space, not resident or
|
||||
private memory. The mmap remains shared and demand-paged.
|
||||
|
||||
After movement and additional portal/density activity, the latest recorded
|
||||
sample before this checkpoint reported 305,393,664 private bytes, 332,742,656
|
||||
working-set bytes, 139,609,360 managed live bytes, 418 entities, 16 threads,
|
||||
117 handles, and the same three socket descriptors. Entity count changed from
|
||||
187 to 418 during that interval, so the memory delta is not treated as a
|
||||
same-workload per-session ceiling.
|
||||
|
||||
## Scheduler finding and correction
|
||||
|
||||
The connected samples exposed two distinct scheduler problems:
|
||||
|
||||
1. scheduler deadlines began during host construction, before sequential
|
||||
account connects completed, producing a false initial catch-up and a
|
||||
roughly 615 ms maximum-lateness sample;
|
||||
2. the final positive sub-millisecond `Task.Delay` remainder rounded down to
|
||||
zero on Linux, causing millions of wait-loop turns between actual 15 ms
|
||||
simulation deadlines.
|
||||
|
||||
The correction:
|
||||
|
||||
- rebases every session and observation deadline exactly once after all
|
||||
configured sessions enter the world;
|
||||
- refuses to rebase a scheduler that has already dispatched;
|
||||
- rounds only positive sub-millisecond timer waits up to one millisecond;
|
||||
- retains the 15 ms absolute simulation cadence and bounded catch-up rules.
|
||||
|
||||
The process still under user observation was intentionally not restarted, so
|
||||
its high wait counter belongs to the pre-correction artifact. The committed
|
||||
correction is protected by deterministic rebase/lateness tests and a real
|
||||
system-timer test that fails if the scheduler busy-loops between turns.
|
||||
|
||||
## Automated gates
|
||||
|
||||
- Windows Headless Release: 56 passed.
|
||||
- Native Ubuntu Headless Release: 56 passed.
|
||||
- Complete Windows Release suite: 8,773 passed / 5 skipped.
|
||||
- Windows and native Ubuntu Release builds complete.
|
||||
- Diagnostics assert two configured sessions, no password text, and exact
|
||||
two-runtime terminal convergence.
|
||||
|
||||
## Remaining K4 gate
|
||||
|
||||
The next connected restart must use exact binary `cb512fd0` or a documented
|
||||
descendant and prove the wait counter remains cadence-bounded, initial
|
||||
catch-up remains zero, CPU falls accordingly, and terminal resource samples
|
||||
converge. Available credentials support a two-account connected scale gate.
|
||||
The 5/10/30-session isolation and endurance dimensions therefore remain
|
||||
automated in-process gates unless additional local ACE accounts are
|
||||
provisioned.
|
||||
|
||||
Numeric ceilings are not yet committed: they will be derived only from the
|
||||
fixed binary under matched 1- and 2-session workloads.
|
||||
|
||||
## Rollback
|
||||
|
||||
```text
|
||||
git revert cb512fd0
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue