Budget the sample buffer in samples per signal, under a hard memory limit
--buffer-samples (k/M/G) replaces --buffer-mb: the request is rounded down to a power of two for every signal and the shared time ring. A separate memory limit (--memory-limit-mb, a Preferences row, default 8 GiB) halves the plan until the real ring bytes fit and says so on stderr and in the status line. The per-source key buffer_mb becomes buffer_samples; an old buffer_mb is ignored. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
616cde5b13
commit
034c82f7d7
20 files changed
+516
-134
No files matched your search
+14
-2
@@ -106,9 +106,21 @@ void update_status_popover(App& app, const udpscope::StatusSnapshot& s) {
|
||||
std::snprintf(buf, sizeof(buf), "%zu signals · %zu channels", s.signals, s.channels);
|
||||
gtk_label_set_text(GTK_LABEL(app.popover_label[6]), buf);
|
||||
|
||||
std::snprintf(buf, sizeof(buf), "%.1f MB · %.0f s span · time x%llu", s.buffer_mb, s.span_s,
|
||||
static_cast<unsigned long long>(s.time_stride));
|
||||
std::snprintf(buf, sizeof(buf), "%s samples/signal · %s · %.0f s span · time x%llu",
|
||||
udpscope::format_samples(s.buffer_samples).c_str(),
|
||||
s.buffer_bytes > 0 ? udpscope::format_bytes(s.buffer_bytes).c_str() : "not planned",
|
||||
s.span_s, static_cast<unsigned long long>(s.time_stride));
|
||||
gtk_label_set_text(GTK_LABEL(app.popover_label[7]), buf);
|
||||
// The reason the figure is not the one asked for, where there is one: a smaller ring than the
|
||||
// source form promised, with the limit that did it, as the label's tooltip.
|
||||
gtk_widget_set_tooltip_text(
|
||||
app.popover_label[7],
|
||||
s.memory_limited
|
||||
? ("limited to " + udpscope::format_samples(s.buffer_samples) + " samples by the " +
|
||||
udpscope::format_bytes(s.memory_limit_bytes) + " memory limit (" +
|
||||
udpscope::format_samples(s.buffer_requested) + " requested)")
|
||||
.c_str()
|
||||
: nullptr);
|
||||
|
||||
const std::string stored = udpscope::format_rate(s.stored_rate_hz);
|
||||
const std::string wire = udpscope::format_rate(s.declared_rate_hz);
|
||||
|
||||
Reference in new issue
Block a user