Struct SchedulerMetronomeWaitData
Decoded Scheduler Metronome Wait span. Payload:
scheduledTimestamp i64, multiplier u8, intentClass u8, phaseFlags u8 (11 B).
public readonly struct SchedulerMetronomeWaitData
- Inherited Members
Remarks
intentClass: 0 = CatchUp (target was already past at wait start — wait phases short-circuited and the next tick fired immediately), 1 = Throttled (Multiplier > 1 — engine is voluntarily slowing itself in response to recent overruns), 2 = Headroom (multiplier == 1, normal between-tick idle waiting for the next 60Hz boundary).
phaseFlags bits: 0x1 = Sleep entered (Thread.Sleep called at least once), 0x2 = Yield entered (Thread.Yield called at least once), 0x4 = Spin entered.
Constructors
SchedulerMetronomeWaitData(byte, long, long, long, byte, byte, byte)
Constructs the decoded metronome-wait record from its wire fields.
public SchedulerMetronomeWaitData(byte threadSlot, long startTimestamp, long durationTicks, long scheduledTimestamp, byte multiplier, byte intentClass, byte phaseFlags)
Parameters
threadSlotbytestartTimestamplongdurationTickslongscheduledTimestamplongmultiplierbyteintentClassbytephaseFlagsbyte
Properties
DurationTicks
Wait duration in Stopwatch.GetTimestamp() ticks.
public long DurationTicks { get; }
Property Value
IntentClass
Wait intent class (0 = CatchUp, 1 = Throttled, 2 = Headroom) — see the type remarks.
public byte IntentClass { get; }
Property Value
Multiplier
Effective tick-rate multiplier in force during the wait (1 = full rate; > 1 = engine voluntarily throttled).
public byte Multiplier { get; }
Property Value
PhaseFlags
Bitmask of wait phases entered (0x1 = Sleep, 0x2 = Yield, 0x4 = Spin) — see the type remarks.
public byte PhaseFlags { get; }
Property Value
ScheduledTimestamp
Timestamp the next tick was scheduled for, in Stopwatch.GetTimestamp() ticks.
public long ScheduledTimestamp { get; }
Property Value
StartTimestamp
Wait start timestamp in Stopwatch.GetTimestamp() ticks.
public long StartTimestamp { get; }
Property Value
ThreadSlot
Producer thread slot (0-255, from the thread-slot registry) the span was emitted on — the timer thread.
public byte ThreadSlot { get; }