Files
ultix/NEXT.md
T
mrcharles 777767db54 24x7 RTMP desktop stream, client side + UAT PASS (#798)
Whole-screen KDE capture -> x264 -> RTMP, fenced to the rt slice.
Loopback mediamtx receiver; Cloudron cutover = one creds edit.
Detail: https://projects.knownelement.com/issues/798#note-4519

💘 Generated with Crush

Assisted-by: Crush:glm-5.2
2026-09-05 05:01:23 -05:00

94 lines
5.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# NEXT — perf-opt closeout COMPLETE (2026-08-31); #610 open-terminal fleet DONE
## 2026-09-05 morning — 24x7 RTMP desktop stream, client side DONE (#798)
- Built + UAT PASS against the LIVE desktop (logs/19-rtmp-uat.out):
h264+aac 1920w ~30fps, 187% of the 2-core ukrrs-rt.slice fence,
self-heal (kill ffmpeg -> respawn -> stream back) proven. Frames
captured + luma-verified. Loopback receiver ukrrs-ultix-rtmp-rx UP
(mediamtx 1.20.1, 127.0.0.1:1935 only).
- HUMAN OWES (one command, installs the systemd service + creds file):
`cd ~/projects/ultix && ./18-rtmp-stream.sh`
then watch locally: `ffplay rtmp://127.0.0.1:1935/live/desktop`
- Cloudron cutover when ready: paste ingest URL+key into
~/.creds/rtmp-stream.env, `systemctl restart ukrrs-rtmp-stream`.
- Limits + tuning record: STREAMING.md (2560w veryfast does NOT fit the
2-core fence until #601; x11grab GetImage caps ~20 delivered fps).
## 2026-09-05 early AM — post-update-reboot RDP outage FIXED (#611)
- Two reboot-triggered killers: waitforx RandR race/empty-argv (shim at
/usr/lib/x86_64-linux-gnu/xrdp/waitforx, pristine = waitforx.real) and
90xbrlapi foreground hang (hook disabled). Re-apply after xrdp/brltty
package upgrades: sudo ./17-fix-rdp-postupdate.sh
- new_cursors=false live (cursor black box; pairs with #631 core cursors).
- LESSON: never bounce the xrdp front-end while a session lives — sesman
orphans the record and the next login spawns a SECOND KDE session on the
shared user bus (dual-plasma conflict). Recovery = kill all session
processes, verify zero plasma, reconnect once.
- Human UAT: desktop confirmed working post-fix; cursor-box verdict pending.
## Tonight (2026-08-31 late, crush had the con)
- Agent-stack relaunchers REMOVED (6-): no screen/crush sessions auto-start
on reboot, any account. Backups: removed-agent-stacks/.
- Open Terminal fleet LIVE (#610): 9 accounts, tailscale-only
100.101.187.119:30000-30008, systemd open-terminal@<user>, keys in
/etc/ukrrs/open-terminal/ + ~/.creds/open-terminal.env. Ops note:
OPEN-TERMINAL.md. UAT PASSED (9-uat-openwebui.out).
- 22:00 night flip verified live (see TRACKING decisions).
- HUMAN OWED: wire production OpenWebUI per OPEN-TERMINAL.md. The
openwebui CONTAINER on this box (v0.3.10, :3000) is too old — upgrade to
0.11.x first. Cloudron prod (0.11.1) is fine.
- Multiqueue bounce DONE + VERIFIED (2026-09-01 morning audit): ens18
Combined 4/4, ens19 2/2; 4-host-netcheck.sh sweep clean (qm config
live, pending empty, bounce 22:51->22:53). Full stack healthy post-boot.
- 2026-09-01: night window now 22:00-07:00 (day-flip timer moved to 07:00).
## Final state — nothing owed (perf pass)
- All guest tuning live and verified (see 16:04-16:15 pass below).
- Host flags live: ssd=1/discard (ROTA=0), iothread, onboot=1, startup
order=10, cpuunits 9000/50, ide2 gone.
- Net multiqueue: DONE + verified 2026-09-01 (bounce 22:51->22:53; ens18
4/4, ens19 2/2). 5-activate-multiqueue.sh is historical record.
- 2026-09-01: microvm tooling LIVE (#615: microvm CLI, qemu-microvm
engine, per-user tap pools + NAT; firecracker blocked by nested-KVM
caps until #601 hardware) + REBUILD.md/docs/state capture landed.
- Gateway boot-race + live-restore endpoint loss: permanently fixed by
ukrrs-gateway-ensure unit (enabled, both lanes).
- Root cause of the 15:59 no-op: the script copy executed then predates the
queues= fix (silent same-value rewrite); current config verified correct.
## Verified live after the 16:01 bounce (all read-only from the guest)
- Disks: ROTA=0, discard 4K/1G on sda+sdb+sdc → ssd=1/discard=on ACTIVE ✅
- Kernel: bbr+fq, 16M socket buffers, dirty_bytes 1G/256M, min_free 384M,
aio 1M, inotify 512/1M, port range 10240-65535, slow_start_after_idle=0,
tcp_tw_reuse=1, THP=madvise, DefaultLimitNOFILE 65536 ✅
- Mounts /,/data1,/data2 = noatime; swap sda5 prio -2 unused ✅
- Units: all ukrrs slices + day/night + psi + builder-prune + thp units
installed and enabled; PSI textfile writing (16:06) ✅
- Docker: daemon.json fully live (live-restore, log caps 20m×3, 172.16/12
pools, metrics :9323); 21 containers up ✅
- Desktop: sddm autologin worked (Relogin=true), session alive on seat0/tty2,
greeter burn GONE ✅
- Gateway prod was DOWN at boot (bind race + live-restore endpoint loss) →
recovered via compose --force-recreate; /status = mode normal, serving ✅
## Nothing owed. Optional sanity check any time (crush can ssh now):
~/projects/ultix/4-host-netcheck.sh
## Noted, no action taken
- mopac-demo/mcli fake containers: restart=no, exited at the first bounce,
left down (test stubs; your call).
- Prometheus/harness daemons not deployed here yet (that is OPT-9's wiring).
## HARDWARE SLIPPED TO ~OCT 2026 (ruling 2026-08-31)
- PRESUME 8 vCPU / 48G on this VM until the #601 window: interim fences
(accounts 3G/4.5G) and the daynight interim values ARE the operating
config; the commented post-upgrade block stays dormant.
- Gateway cpuset hard reservation (16-17) waits for the window → the
compose cgroup_parent wiring is THE starvation fix meanwhile (ticketed).
- q35 / 20 vCPU / 128G / GPUs / USB3 reseat / NFS-outage-for--02 all move
to the same October window (#601 → version october-2026-window, due
10-31; #606).
- Fri 2026-09-04 = #609: troubleshooting-only outage (USB SDR reseat +
zero-cost socket/PSU/BIOS checks). Host down ⇒ this VM down, auto-starts
via onboot=1; gateway auto-recovers (validated 2026-08-31).