Enum GaugeId
Stable wire-contract identifier for a single gauge value carried inside a PerTickSnapshot record.
public enum GaugeId : ushort
Fields
ClusterFenceSpanUs = 1285The previous tick's partitioning-fence SPAN in microseconds — Prep's start to the last phase that dispatched, so the six phase spans plus the scheduler's gaps between them. Value kind: U32Count, carrying microseconds (there is no duration kind; the name carries the unit, as PageCacheLRUAgeTicks does).
The one figure that says what the fence cost the frame. Every other spatial-maintenance timing on the wire is summed across workers, and a sum cannot be compared to a frame budget: W workers busy for 1 ms report W. Read the summed ones against this — their ratio is the parallelism the work achieved. Absent from a trace whose host drove the fence serially, because the phase-exec systems that time it never ran.
GcHeapCommittedBytes = 277Total bytes the GC has committed from the OS. Value kind: U64Bytes.
GcHeapGen0Bytes = 272Gen0 size after last GC, in bytes. Value kind: U64Bytes.
GcHeapGen1Bytes = 273Gen1 size after last GC, in bytes. Value kind: U64Bytes.
GcHeapGen2Bytes = 274Gen2 size after last GC, in bytes. Value kind: U64Bytes.
GcHeapLohBytes = 275Large-object-heap size after last GC, in bytes. Value kind: U64Bytes.
GcHeapPohBytes = 276Pinned-object-heap size after last GC, in bytes. Value kind: U64Bytes.
MemoryFragmentationPctHundredths = 259Allocator fragmentation ratio expressed as hundredths-of-percent (e.g. 5025 = 50.25%). Value kind: U32PercentHundredths.
MemoryPoolFreeBlocksStride1024 = 264Free-block count for stride-1024 pool. Value kind: U32Count.
MemoryPoolFreeBlocksStride128 = 261Free-block count for stride-128 pool. Value kind: U32Count.
MemoryPoolFreeBlocksStride2048 = 265Free-block count for stride-2048 pool. Value kind: U32Count.
MemoryPoolFreeBlocksStride256 = 262Free-block count for stride-256 pool. Value kind: U32Count.
MemoryPoolFreeBlocksStride4096 = 266Free-block count for stride-4096 pool. Value kind: U32Count.
MemoryPoolFreeBlocksStride512 = 263Free-block count for stride-512 pool. Value kind: U32Count.
MemoryPoolFreeBlocksStride64 = 260Free-block count for stride-64 pool. Value kind: U32Count.
MemoryUnmanagedLiveBlocks = 258Count of live (not-yet-disposed)
PinnedMemoryBlockinstances. Value kind: U32Count.MemoryUnmanagedPeakBytes = 257All-time peak of MemoryUnmanagedTotalBytes since process start. Value kind: U64Bytes.
MemoryUnmanagedTotalBytes = 256Running total of unmanaged bytes currently allocated through
MemoryAllocator.TrackAllocation. Value kind: U64Bytes.None = 0Sentinel — never emitted.
PageCacheAdmissionLimit = 524How many units of work the storage gate lets run at once, 0 when it is off (#1382, S4). Value kind: U32Count.
PageCacheAdmissionWaitsTotal = 525Units of work that waited at the storage gate, cumulative (#1382). Value kind: U64Bytes.
PageCacheBackpressureRoundsTotal = 522Back-pressure rounds since the engine opened, cumulative: the viewer derives the rate. Value kind: U64Bytes.
PageCacheCleanUsedPages = 514Pages used, clean (no pending write). Mutually-exclusive with PageCacheDirtyUsedPages. Value kind: U32Count.
PageCacheDirtyUsedPages = 515Pages used, dirty (have pending writes awaiting checkpoint). Mutually-exclusive with PageCacheCleanUsedPages. Value kind: U32Count.
PageCacheEpochProtectedPages = 517Pages pinned by an active epoch guard (cannot be evicted). Value kind: U32Count.
PageCacheExclusivePages = 516Pages held under exclusive lock by an in-flight writer. Value kind: U32Count.
PageCacheFileSizeBytes = 520Total file size in bytes for the primary database's MemoryMappedFile. Value kind: U64Bytes.
PageCacheFreePages = 513Pages currently free (empty slots). Value kind: U32Count.
PageCacheHealthState = 521The storage health state, 0 Healthy, 1 Pressured, 2 Overloaded, 3 Starved (#1382). Value kind: U32Count.
PageCacheLRUAgeTicks = 519Stopwatch-tick age of the oldest entry on the LRU list (snapshotted once per tick). Value kind: U64Bytes.
PageCacheOverloadExtensionsTotal = 523Waits that went on past their back-pressure timeout because pages were being served, cumulative (#1382). Value kind: U64Bytes.
PageCachePendingIoReads = 518Count of I/O reads currently in flight. Value kind: U32Count.
PageCacheTotalPages = 512Total pages in the in-memory page cache. Fixed at init — emitted once in the first snapshot. Value kind: U32Count.
SpatialGridBlockCount = 1280Blocks the sparse cell grid has materialised. Value kind: U32Count.
SpatialGridDenseEquivalentBytes = 1284Bytes a DENSE grid over the same world would have allocated, occupied or not. Value kind: U64Bytes.
Read against SpatialGridResidentBytes: that comparison is the sparse grid's whole argument, and it is also the guard on the one discipline it depends on — a read path that resolves cells WITH creation makes resident climb toward dense with no other symptom (rule
VG-02).SpatialGridIntraBlockFill = 1282Occupied cells as hundredths of a percent of the blocks' addressable capacity. Value kind: U32PercentHundredths.
A low fill argues for replacing the dense per-block
int[]with a bitmask plus compaction; a high one says the dense array is right.SpatialGridOccupiedCells = 1281Cells that actually hold something — the population the 64-byte
CellStatepool is paid for. Value kind: U32Count.SpatialGridResidentBytes = 1283Bytes the grid currently holds — block index arrays plus the occupied cells' pool. Value kind: U64Bytes.
TransientStoreBytesUsed = 528Bytes currently in use by the transient store. Value kind: U64Bytes.
TransientStoreMaxBytes = 529Configured max bytes for the transient store. Fixed at init — emitted once. Value kind: U64Bytes.
TxChainActiveCount = 1024Count of active (not-yet-committed) transaction-chain entries. Value kind: U32Count.
TxChainCommitTotal = 1040Cumulative count of transactions committed since engine start. Value kind: U64Bytes.
TxChainCreatedTotal = 1044Cumulative count of transactions created since engine start. Viewer subtracts consecutive snapshots for per-tick "transactions started" throughput. Value kind: U64Bytes.
TxChainPoolSize = 1025Current size of the transaction-chain pool (active + pooled-idle). Value kind: U32Count.
TxChainRollbackTotal = 1041Cumulative count of transactions rolled back since engine start. Value kind: U64Bytes.
UowRegistryActiveCount = 1026Count of active entries in the UoW registry. Value kind: U32Count.
UowRegistryCommittedTotal = 1043Cumulative count of UoW slots committed since engine start. Value kind: U64Bytes.
UowRegistryCreatedTotal = 1042Cumulative count of UoW slots allocated since engine start. Value kind: U64Bytes.
UowRegistryVoidCount = 1027Count of void (recovery-orphan) UoW registry entries. Typically zero outside of post-crash recovery. Value kind: U32Count.
WalCommitBufferCapacityBytes = 769Configured WAL commit buffer capacity. Fixed at init — emitted once. Value kind: U64Bytes.
WalCommitBufferUsedBytes = 768Bytes currently queued in the WAL commit buffer awaiting drain. Value kind: U64Bytes.
WalInflightFrames = 770Count of WAL frames submitted but not yet durable on disk. Value kind: U32Count.
WalStagingPoolCapacity = 773Configured staging pool capacity. Fixed at init — emitted once. Value kind: U32Count.
WalStagingPoolPeakRented = 772Peak of WalStagingPoolRented since process start. Value kind: U32Count.
WalStagingPoolRented = 771Count of staging buffers currently checked out from the pool. Value kind: U32Count.
WalStagingTotalRentsCumulative = 774Cumulative total of staging-pool rents since process start (viewer derives rate as Δ/Δt). Value kind: U64Bytes.
Remarks
Values are 16-bit unsigned and partitioned into category ranges (0x0100 = unmanaged memory, 0x0110 = GC heap, 0x0200 = page cache,
0x0210 = transient store, 0x0300 = WAL, 0x0400 = transactions/UoW). Each category leaves headroom for additional gauges without
renumbering. Numeric assignments are part of the .typhon-trace file format — never renumber an existing entry; only append new ones.
The valueKind byte preceding each value in the packed payload declares the on-wire representation
(see GaugeValueKind). The expected value kind per gauge is documented in inline comments and must not change without
bumping the wire format version.