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
94 lines
5.4 KiB
Markdown
94 lines
5.4 KiB
Markdown
# 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).
|