Table of Contents

Enum GaugeId

Namespace
Typhon.Profiler
Assembly
Typhon.Profiler.dll

Stable wire-contract identifier for a single gauge value carried inside a PerTickSnapshot record.

public enum GaugeId : ushort

Fields

ClusterFenceSpanUs = 1285

The 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 = 277

Total bytes the GC has committed from the OS. Value kind: U64Bytes.

GcHeapGen0Bytes = 272

Gen0 size after last GC, in bytes. Value kind: U64Bytes.

GcHeapGen1Bytes = 273

Gen1 size after last GC, in bytes. Value kind: U64Bytes.

GcHeapGen2Bytes = 274

Gen2 size after last GC, in bytes. Value kind: U64Bytes.

GcHeapLohBytes = 275

Large-object-heap size after last GC, in bytes. Value kind: U64Bytes.

GcHeapPohBytes = 276

Pinned-object-heap size after last GC, in bytes. Value kind: U64Bytes.

MemoryFragmentationPctHundredths = 259

Allocator fragmentation ratio expressed as hundredths-of-percent (e.g. 5025 = 50.25%). Value kind: U32PercentHundredths.

MemoryPoolFreeBlocksStride1024 = 264

Free-block count for stride-1024 pool. Value kind: U32Count.

MemoryPoolFreeBlocksStride128 = 261

Free-block count for stride-128 pool. Value kind: U32Count.

MemoryPoolFreeBlocksStride2048 = 265

Free-block count for stride-2048 pool. Value kind: U32Count.

MemoryPoolFreeBlocksStride256 = 262

Free-block count for stride-256 pool. Value kind: U32Count.

MemoryPoolFreeBlocksStride4096 = 266

Free-block count for stride-4096 pool. Value kind: U32Count.

MemoryPoolFreeBlocksStride512 = 263

Free-block count for stride-512 pool. Value kind: U32Count.

MemoryPoolFreeBlocksStride64 = 260

Free-block count for stride-64 pool. Value kind: U32Count.

MemoryUnmanagedLiveBlocks = 258

Count of live (not-yet-disposed) PinnedMemoryBlock instances. Value kind: U32Count.

MemoryUnmanagedPeakBytes = 257

All-time peak of MemoryUnmanagedTotalBytes since process start. Value kind: U64Bytes.

MemoryUnmanagedTotalBytes = 256

Running total of unmanaged bytes currently allocated through MemoryAllocator.TrackAllocation. Value kind: U64Bytes.

None = 0

Sentinel — never emitted.

PageCacheAdmissionLimit = 524

How many units of work the storage gate lets run at once, 0 when it is off (#1382, S4). Value kind: U32Count.

PageCacheAdmissionWaitsTotal = 525

Units of work that waited at the storage gate, cumulative (#1382). Value kind: U64Bytes.

PageCacheBackpressureRoundsTotal = 522

Back-pressure rounds since the engine opened, cumulative: the viewer derives the rate. Value kind: U64Bytes.

PageCacheCleanUsedPages = 514

Pages used, clean (no pending write). Mutually-exclusive with PageCacheDirtyUsedPages. Value kind: U32Count.

PageCacheDirtyUsedPages = 515

Pages used, dirty (have pending writes awaiting checkpoint). Mutually-exclusive with PageCacheCleanUsedPages. Value kind: U32Count.

PageCacheEpochProtectedPages = 517

Pages pinned by an active epoch guard (cannot be evicted). Value kind: U32Count.

PageCacheExclusivePages = 516

Pages held under exclusive lock by an in-flight writer. Value kind: U32Count.

PageCacheFileSizeBytes = 520

Total file size in bytes for the primary database's MemoryMappedFile. Value kind: U64Bytes.

PageCacheFreePages = 513

Pages currently free (empty slots). Value kind: U32Count.

PageCacheHealthState = 521

The storage health state, 0 Healthy, 1 Pressured, 2 Overloaded, 3 Starved (#1382). Value kind: U32Count.

PageCacheLRUAgeTicks = 519

Stopwatch-tick age of the oldest entry on the LRU list (snapshotted once per tick). Value kind: U64Bytes.

PageCacheOverloadExtensionsTotal = 523

Waits that went on past their back-pressure timeout because pages were being served, cumulative (#1382). Value kind: U64Bytes.

PageCachePendingIoReads = 518

Count of I/O reads currently in flight. Value kind: U32Count.

PageCacheTotalPages = 512

Total pages in the in-memory page cache. Fixed at init — emitted once in the first snapshot. Value kind: U32Count.

SpatialGridBlockCount = 1280

Blocks the sparse cell grid has materialised. Value kind: U32Count.

SpatialGridDenseEquivalentBytes = 1284

Bytes 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 = 1282

Occupied 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 = 1281

Cells that actually hold something — the population the 64-byte CellState pool is paid for. Value kind: U32Count.

SpatialGridResidentBytes = 1283

Bytes the grid currently holds — block index arrays plus the occupied cells' pool. Value kind: U64Bytes.

TransientStoreBytesUsed = 528

Bytes currently in use by the transient store. Value kind: U64Bytes.

TransientStoreMaxBytes = 529

Configured max bytes for the transient store. Fixed at init — emitted once. Value kind: U64Bytes.

TxChainActiveCount = 1024

Count of active (not-yet-committed) transaction-chain entries. Value kind: U32Count.

TxChainCommitTotal = 1040

Cumulative count of transactions committed since engine start. Value kind: U64Bytes.

TxChainCreatedTotal = 1044

Cumulative count of transactions created since engine start. Viewer subtracts consecutive snapshots for per-tick "transactions started" throughput. Value kind: U64Bytes.

TxChainPoolSize = 1025

Current size of the transaction-chain pool (active + pooled-idle). Value kind: U32Count.

TxChainRollbackTotal = 1041

Cumulative count of transactions rolled back since engine start. Value kind: U64Bytes.

UowRegistryActiveCount = 1026

Count of active entries in the UoW registry. Value kind: U32Count.

UowRegistryCommittedTotal = 1043

Cumulative count of UoW slots committed since engine start. Value kind: U64Bytes.

UowRegistryCreatedTotal = 1042

Cumulative count of UoW slots allocated since engine start. Value kind: U64Bytes.

UowRegistryVoidCount = 1027

Count of void (recovery-orphan) UoW registry entries. Typically zero outside of post-crash recovery. Value kind: U32Count.

WalCommitBufferCapacityBytes = 769

Configured WAL commit buffer capacity. Fixed at init — emitted once. Value kind: U64Bytes.

WalCommitBufferUsedBytes = 768

Bytes currently queued in the WAL commit buffer awaiting drain. Value kind: U64Bytes.

WalInflightFrames = 770

Count of WAL frames submitted but not yet durable on disk. Value kind: U32Count.

WalStagingPoolCapacity = 773

Configured staging pool capacity. Fixed at init — emitted once. Value kind: U32Count.

WalStagingPoolPeakRented = 772

Peak of WalStagingPoolRented since process start. Value kind: U32Count.

WalStagingPoolRented = 771

Count of staging buffers currently checked out from the pool. Value kind: U32Count.

WalStagingTotalRentsCumulative = 774

Cumulative 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.