M9: parking (scale) #10
Labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Depends on
#3 M9 step 1: memory cheap wins (S9)
jhgaylor/illogical
Reference
jhgaylor/illogical#10
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Depends on: #3
Trigger: Panes with real history still blow the memory budget after step 1 (rerun the S9 benchmark).
Step 1 (cheap memory wins) is split out as a separate issue and comes first.
From PLAN.md, section "M9".
Superlogical's server numbers are about 400KB per terminal against 5MB for
tmux, and unparking takes about 200µs.
Trigger: any one of these:
Measure first. The milestone starts with a benchmark (RSS per pane at
empty, full screen and 10k scrollback; per attached client) committed as a
test.
Step 2: parking, only if panes with real history still blow the budget.
S9 found nothing that argues for PTY or client-buffer parking. Parking
can't save the shells and shims either (0.75–0.87 GB at 500 panes).
Stalled clients: a client that stops reading cost about 28 MB in one
burst, and up to about 64 MB per client from the 1,024-frame queue. Cap the
queue in bytes, not frames.
CI benchmark: S9's
bench.pyat 50 idle panes (3.07–3.11 MB per paneover four runs) is the regression test M9 wants. Leave headroom.
Terminal parking.
using the M2 path and S5's format, and free the engine.
PTY parking. Idle or unwatched PTYs move off their own read tasks onto
one shared epoll task.
Client buffer parking. Free an idle client's per-pane buffers.
Done when: