docs: describe continuous-mode memory bounds #125
@@ -72,6 +72,39 @@ irtt-client netperf-eu.bufferbloat.net:2112 --duration 0
|
|||||||
|
|
||||||
|
|
|||||||
Use `Ctrl-C` to stop gracefully.
|
Use `Ctrl-C` to stop gracefully.
|
||||||
|
|
||||||
|
### Continuous-mode memory
|
||||||
|
|
||||||
|
`--duration 0` uses continuous statistics. Its retained application state does
|
||||||
|
not grow without bound with elapsed run time or the number of probes: timing
|
||||||
|
metrics keep running count/min/max/mean/variance values, not a complete
|
||||||
|
timing-sample history. Consequently, exact medians are unavailable. The
|
||||||
|
default continuous statistics configuration also enables no rolling
|
||||||
|
event/history window; it keeps bounded adjacent-sequence IPDV state (4,096
|
||||||
|
sequences) so nearby replies can still form IPDV pairs.
|
||||||
|
|
||||||
|
Reply classification is bounded per target session. By default, each of the
|
||||||
|
pending, timed-out, and completed/duplicate sequence stores has its own
|
||||||
|
4,096-entry limit; this is not one shared 4,096-probe total. A full pending
|
||||||
|
store makes the managed CLI/TUI fail and drain that target as resource
|
||||||
|
exhausted; it does not wait for capacity to free. Timed-out and completed state
|
||||||
|
evict their oldest entries, so a sufficiently old late reply can still be seen
|
||||||
|
and counted but no longer has retained send state for measurements such as RTT
|
||||||
|
or applicable one-way delay.
|
||||||
|
|
||||||
|
The retained state scales with the number of configured targets and these
|
||||||
|
fixed per-target limits, rather than total probes. CLI output is written as
|
||||||
|
events arrive rather than accumulated. Its managed presentation stream is
|
||||||
|
bounded and lossy (the applets configure 16,384 events), so a slow consumer can
|
||||||
|
miss events and the CLI/TUI reports that resulting output/statistics may be
|
||||||
|
incomplete. The TUI additionally keeps up to 100,000 graph samples per target
|
||||||
|
and 80 recent messages. These are retained-application-state bounds, not a
|
||||||
|
claim of a fixed process RSS ceiling: allocator behavior, output consumers,
|
||||||
|
and operating-system resources remain outside them.
|
||||||
|
|
||||||
|
For finite runs, the tradeoff is different: exact timing samples (and
|
||||||
|
adjacent-sequence IPDV state) are retained to calculate exact medians, so
|
||||||
|
statistics memory grows with probe count.
|
||||||
|
|
||||||
## Multiple targets
|
## Multiple targets
|
||||||
|
|
||||||
Probe several targets concurrently:
|
Probe several targets concurrently:
|
||||||
|
|||||||
Reference in new issue
Block a user
For the CLI/TUI managed path, when a high-rate continuous target accumulates 4,096 still-pending probes before the first timeout,
PendingMap::preflight_insertreturnsPendingLimitExceeded, andManagedClientTask::poll_one_sendroutes that error tobegin_open_session_failurerather than retrying after space is freed. The target is therefore drained and terminated as resource-exhausted (and a single-target run fails), so this sentence incorrectly describes the limit as transient backpressure; document the terminal behavior instead.AGENTS.md reference: AGENTS.md:L78-L78
Useful? React with 👍 / 👎.
Continuous-mode retained state does grow with probes until its bounds are reached: successful replies populate the IPDV tracker up to 4,096 sequences, classification stores fill up to their limits, and the TUI graph grows to 100,000 samples per target. The later paragraphs acknowledge these limits, so saying the state “does not grow” is contradictory and can understate warm-up memory consumption; state that it does not grow without bound instead.
AGENTS.md reference: AGENTS.md:L78-L78
Useful? React with 👍 / 👎.