Table of Contents

Struct TickSummary

Namespace
Typhon.Profiler
Assembly
Typhon.Profiler.dll

Per-tick rollup shipped to the client as the overview feed. Small enough that all ticks for a 500K-tick trace fit in ~16 MB (40 B × 400K), so the client fetches the entire summary on open and renders the timeline from it without any chunk loads.

public struct TickSummary
Inherited Members

Remarks

Wire size 40 bytes (was 32 before chunker v9). Bumped in v9 (issue #289 follow-up) to surface per-tick OverloadDetector decisions + metronome wait diagnostics. Old v8 caches don't carry these fields and must be rebuilt; CurrentChunkerVersion gates the upgrade.

Fields

ActiveSystemsBitmask

Bitmask of system indices that ran in this tick. Bit N set iff system index N had any activity. Caps at 64 systems; systems beyond index 63 don't set bits (overview still accurate for count/duration; bitmask is just a rough "did this system run" indicator).

public ulong ActiveSystemsBitmask

Field Value

ulong

ConsecutiveOverrun

OverloadDetector's _consecutiveOverrunTicks at end-of-tick — number of consecutive ticks above OverrunThreshold (1.2× by default). Saturates at MaxValue. Captured from the SchedulerOverloadDetector instant (kind 242). v11+, zero on older.

public ushort ConsecutiveOverrun

Field Value

ushort

ConsecutiveUnderrun

OverloadDetector's _consecutiveUnderrunTicks at end-of-tick — number of consecutive ticks below DeescalationRatio (0.6× by default). Climbs toward DeescalationTicks (20 default) before deescalation fires; resets on any overrun tick. Saturates at MaxValue.

public ushort ConsecutiveUnderrun

Field Value

ushort

DurationUs

Total wall-clock duration of the tick in microseconds.

public float DurationUs

Field Value

float

EventCount

Event count for this tick.

public uint EventCount

Field Value

uint

MaxSystemDurationUs

Longest single-system duration observed in this tick (µs). Drives the color-scale normalization on the timeline.

public float MaxSystemDurationUs

Field Value

float

MetronomeIntentClass

Intent classification of the preceding metronome wait — 0 = CatchUp (target already past, no real wait), 1 = Throttled (mult>1), 2 = Headroom (normal idle).

public byte MetronomeIntentClass

Field Value

byte

MetronomeWaitUs

Duration of the metronome wait that preceded this tick, saturating at MaxValue µs (≈65 ms — well past any realistic gap). Captured by observing the SchedulerMetronomeWait span (kind 241) that ended just before this tick's TickStart. Zero for tick 0.

public ushort MetronomeWaitUs

Field Value

ushort

OverloadLevel

OverloadDetector level at the end of this tick (0=Normal, 1/2=Level1/2, 3=TickRateModulation, 4=PlayerShedding). From TickEnd payload.

public byte OverloadLevel

Field Value

byte

StartUs

Absolute start timestamp of this tick in microseconds (relative to the same origin as GlobalStartUs). Added in chunker v2 so the viewer can map viewRange-in-µs back to a tickNumber range without reading any chunk payload. Ticks with idle gaps between them (duration < scheduler period) are handled correctly — this is the true wall-clock start, not a cumulative sum of durations.

public double StartUs

Field Value

double

TickMultiplier

Effective tick-rate multiplier for this tick (chain values: 1, 2, 3, 4, 6). multiplier > 1 means engine voluntarily slowed itself.

public byte TickMultiplier

Field Value

byte

TickNumber

Tick number.

public uint TickNumber

Field Value

uint

_reservedByte

Reserved padding byte keeping the struct 8-byte-aligned; zero on disk.

public byte _reservedByte

Field Value

byte

_reservedUshort

Reserved padding (u16) keeping the struct 8-byte-aligned; zero on disk.

public ushort _reservedUshort

Field Value

ushort