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
+5
-1
@@ -24,7 +24,11 @@ int main(int argc, char** argv) {
|
||||
// The preferences fill in what the command line did not decide. `--relative-time` is an explicit
|
||||
// instruction for this run, so a preference can only turn the mode on, never off -- which is also
|
||||
// why this is read here, before the buffers are planned: the mode changes how they are filled.
|
||||
if (udpscope::load_settings().relative_time) cfg.relative_time = true;
|
||||
const udpscope::Settings prefs = udpscope::load_settings();
|
||||
if (prefs.relative_time) cfg.relative_time = true;
|
||||
// The memory limit is the same kind of statement, the other way round: the flag is the explicit
|
||||
// instruction for this run and the preference only fills in when it was absent.
|
||||
if (!cfg.memory_limit_specified) cfg.memory_limit_mb = static_cast<std::uint64_t>(prefs.memory_limit_mb);
|
||||
} catch (const std::exception& e) {
|
||||
std::fprintf(stderr, "udpscope: %s\n", e.what());
|
||||
return 2;
|
||||
|
||||
Reference in new issue
Block a user