Logging & Runtime
Seed, duration, threading, mailbox sizing, CSV reports, and tracing.
This page documents “general” configuration keys that are not specific to flows/topology.
Implementation notes:
CsvLoggerreads logging keys fromsrc/utils/logger.rs.- Runtime/UI/tracing keys are read from small config structs in
src/topos/topo.rsandsrc/utils/.
seed (required)
Random seed used for reproducibility (flow-set endpoint selection, random distributions, RED randomness).
seed = 1000duration (optional)
Total simulated time in seconds.
- Default (topology):
1500.0
duration = 20.0Note: duration is parsed by multiple subsystems (topology, UI, tracing). For consistency, prefer setting it explicitly.
threading (optional)
Threading model for the simulation runtime.
threading = "single"- Allowed values:
single,multiple singleuses a single-threaded runtime.multipleuses one worker per CPU core by default.- If omitted, Days uses the
nexosimdefault runtime configuration.
num_threads (optional)
Overrides the number of runtime worker threads when threading = "multiple".
threading = "multiple"
num_threads = 4hot_workers (optional)
Number of hot standby worker threads. Hot workers remain active and ready to pick up tasks, reducing latency for bursty workloads.
hot_workers = 2concurrency_level (optional)
Concurrency acceleration mode for the simulation runtime.
- Allowed values:
default,accelerated
concurrency_level = "accelerated"time_quantum_ns (optional)
Simulation time quantum in nanoseconds. Controls the granularity of time-based scheduling in the simulation engine.
time_quantum_ns = 1000mailbox_capacity (optional)
Mailbox capacity for most models (bounded message queues).
- Default:
16
mailbox_capacity = 32CSV reporting
log_path (optional)
Output directory for CSV files.
- Default:
./output
log_path = "./logs/run1"Days will create the directory if needed and will write:
sources.csv,sinks.csv,switches.csv- plus optional
pfc.csvdepending on features. - plus optional per-transition protocol traces for LeanGuard (
*_events.csv) depending on features:aqm_events.csv(--features lean)dcqcn_events.csv(--features dcqcn,lean)pfc_events.csv(--features l2_pfc,lean)cubic_events.csv(--features lean)drr_events.csv(--features lean)wfq_events.csv(--features lean)
traces.json: a manifest listing which*_events.csvtraces are non-empty (written at the end of a run).
report_interval (optional)
Interval in seconds between periodic report rows.
- Default:
f64::MAX(effectively “no periodic reports”; data is flushed at the end)
report_interval = 1.0Progress UI
ui_interval (optional)
UI refresh interval in seconds.
- Default:
duration / 100
ui_interval = 1.0Concurrency tracing (optional)
Enable lightweight concurrency sampling:
tracing_active = true
tracing_interval = 1.0tracing_active(default:false)tracing_interval(default:duration / 100)
When enabled, Days installs a tracing subscriber layer and computes a wall-clock average concurrency during Simulation::step_until (and logs the peak observed by the tracing layer).
Application-level sources for TCP collectives (optional)
For certain TCP collectives (broadcast, ring allreduce), Days can back TCP flows with a shared, actor-managed byte buffer (src/flows/app_source.rs).
Configure the actor under [app_source]:
[app_source]
req_channel_capacity = 256
chunk_size = 512
initial_delay = 1
run_interval = 50Fields and defaults:
| Field | Type | Default | Description |
|---|---|---|---|
req_channel_capacity | usize | 256 | Channel capacity for buffer requests |
chunk_size | usize | 512 | Preferred chunk size for requests (bytes) |
initial_delay | u64 | 1 | Actor start delay (microseconds) |
run_interval | u64 | 50 | Actor polling interval (microseconds) |
If [app_source] is omitted entirely, Days uses AppBufferConfig::default() with the defaults above.