Class ProfilerOptions
Tunable parameters for TyphonProfiler.Start. All defaults are tuned for typical Typhon workloads (~30 producer threads, ~3 exporters).
public sealed class ProfilerOptions
- Inheritance
-
ProfilerOptions
- Inherited Members
Constructors
ProfilerOptions()
public ProfilerOptions()
Properties
ConsumerCadence
Cadence at which the consumer thread wakes to drain all slot rings and fan out to exporters. Default: 1 ms. Lower = lower end-to-end latency for live viewers, higher CPU. Higher = batched I/O efficiency, more records buffered.
public TimeSpan ConsumerCadence { get; set; }
Property Value
MergeBufferBytes
Capacity of the consumer's per-pass merge scratch buffer in bytes. Drains from all slots accumulate here before sorting and slicing into TraceRecordBatches. Default: 512 KB — large enough that a single drain pass absorbs a typical burst without leaving bytes in the producer rings for a subsequent pass. Must be at least Typhon.Engine.Internals.TraceRecordBatchPool.MaxPayloadBytes (enforced by Validate()). Under the observability "better to over-buffer than drop" priority, raise this when a workload shows records carrying over between drain passes.
public int MergeBufferBytes { get; set; }
Property Value
PerExporterChannelDepth
Bounded queue depth between the consumer thread and each exporter. Default: 4. When an exporter is slow, this many cadence ticks of batches can buffer before drop-newest kicks in.
public int PerExporterChannelDepth { get; set; }
Property Value
SpilloverBufferCount
Number of pre-allocated spillover ring buffers held in the Typhon.Engine.Internals.SpilloverRingPool. When a thread's
primary 1 MiB ring overflows, the producer pops a spillover from the pool and chains it onto the slot, continuing
to write there. The consumer drains the chain in FIFO order and recycles each spillover back to the pool when
it's emptied. Default: 8 (covers AntHill's ~11 MiB bulk-spawn burst with 7× headroom and supports concurrent
bursts on multiple workers). Set to 0 to disable spillover entirely (matches pre-spillover behavior:
producers drop on primary overflow).
public int SpilloverBufferCount { get; set; }
Property Value
SpilloverBufferSizeBytes
Size of each spillover buffer in bytes. Must be a power of two and at least 64 KiB. Default: 16 MiB — sized so
one spillover absorbs a 200K-entity bulk-spawn burst (~11 MiB at 56 B per EcsSpawn record). Total
per-process spillover memory at default config: SpilloverBufferCount × SpilloverBufferSizeBytes = 128 MiB,
allocated only while the profiler is running.
public int SpilloverBufferSizeBytes { get; set; }
Property Value
Methods
Validate()
Validates options and throws if any field is invalid.
public void Validate()