BKPT LabsDOCS/VIEWALYZER/RUNTIME MAP VIEWALYZER · GPUI EDITION
VIEWALYZER · VIEWS

Runtime Map

A map of what your firmware actually did: every task, interrupt and instrumented object that appears in the recording is a node, and every recorded interaction between two of them (a queue send, a semaphore take, a mutex acquire, a notification) is a link. Traffic animates along the links as the cursor moves, failures are marked where they happened, and pending queue items sit on the object as dots.

The Organized layout: tasks on the outer ring, then instrumentation, messaging and synchronization objects, with every recorded interaction drawn between them.
THE ORGANIZED LAYOUT: TASKS ON THE OUTER RING, THEN INSTRUMENTATION, MESSAGING AND SYNCHRONIZATION OBJECTS, WITH EVERY RECORDED INTERACTION DRAWN BETWEEN THEM

The map only draws what was recorded. Nothing is inferred from source code, and a missing link means no recorded operation, not proof that the code path cannot run.

Needs: a recording (or a live capture) with task and kernel-object events. Queue occupancy, notification values and stream/message buffers need the matching recorder detail hooks; older recordings still map, with those details left out.

Reading the map

  • Node colour says what kind of thing it is: blue for tasks and interrupts, green for queues and buffers, purple for synchronization objects, user traces and other instrumentation, grey for activity with no known task context.
  • Links carry one colour per operation kind. A moving dot on a link is a recorded event near the cursor; dot travel is illustrative, the event time is measured.
  • Red crosses mark failed operations and timeouts at the affected object; an amber ring marks mutex contention. Both cues last 600 ms around the event.
  • Stacked dots with a count beside a queue or notification are its pending items at the cursor (the backpressure display).
  • The status strip at the bottom counts nodes, links and operations in the mapped range, unknown-context activity and capture integrity markers.

The map follows the shared cursor: scrub the Timeline and the traffic, pending counts and inspector all move to that moment. Shift-sweep the Timeline to limit the map to a selected interval.

Layouts

Choose a layout from the gear menu in the panel header. Every layout shows the same nodes and links; only the arrangement changes.

Constellation: connected objects pull together into clusters.
CONSTELLATION: CONNECTED OBJECTS PULL TOGETHER INTO CLUSTERS
LAYOUT WHAT IT DOES
ConstellationA force layout: objects that talk to each other cluster together, so subsystems separate on their own.
OrganizedConcentric rings by role: tasks outside, then instrumentation, messaging and synchronization toward the centre. Ring labels name each band.
CenteredPuts the selected object at the centre and places everything else by connection distance from it.
HierarchyThe same distance levels as Centered, drawn as rows from the selected object downward; disconnected objects sit in a band at the bottom.
LinearLeft-to-right columns from the roots you pick, with in/out counts on each card. Best for following one queue or mutex.
Hierarchy: rows by connection distance from DefaultTask.
HIERARCHY: ROWS BY CONNECTION DISTANCE FROM DEFAULTTASK

Levels in Centered and Hierarchy are connection distance, not ownership or call order; arrows keep the recorded direction.

Linear: follow a few objects

Linear with SensorDataQ and SharedResMutex as roots: the tasks that use them, with in/out counts.
LINEAR WITH SENSORDATAQ AND SHAREDRESMUTEX AS ROOTS: THE TASKS THAT USE THEM, WITH IN/OUT COUNTS

Click object names in the Objects list (or type in the search box) to add them as roots. The roots stay in the left column; every object with a recorded connection to them lines up on the right, with in and out counts for the mapped range. Clear roots starts over.

Heat

Turn on Traffic heat in the gear menu to colour every link by how much traffic it carried. Colour is relative and logarithmic: blue is cold, red is the busiest path in the range.

Traffic heat on the Organized layout over the whole recording.
TRAFFIC HEAT ON THE ORGANIZED LAYOUT OVER THE WHOLE RECORDING

Group by heat rearranges the rings so the busiest objects gather on one side of each band, with a coloured arc behind them. It is the fastest way to see where the work actually goes.

Group by heat: hot objects gather in red arcs, cold ones in blue.
GROUP BY HEAT: HOT OBJECTS GATHER IN RED ARCS, COLD ONES IN BLUE

The heat bar along the bottom of the map controls what is shown:

  • The range slider keeps only paths inside a heat band. Drag the left handle up to hide the quiet traffic and keep the hot paths.
  • Reset returns to the full range.
  • Group by heat is the same toggle as in the gear menu.
  • The caption says what the heat covers (whole recording or selected time), the peak count, the time range, and whether trace gaps fall inside it.
The slider at 60 to 100 percent: only the hottest 50 of 81 paths stay lit.
THE SLIDER AT 60 TO 100 PERCENT: ONLY THE HOTTEST 50 OF 81 PATHS STAY LIT

Shift-sweep a range on the Timeline and the heat covers only that interval. Comparing a quiet window with a busy one is the quickest way to see which paths a burst actually used.

Heat for a 600 ms selection, with the Timeline below showing the selected interval.
HEAT FOR A 600 MS SELECTION, WITH THE TIMELINE BELOW SHOWING THE SELECTED INTERVAL

Heat totals do not depend on the playback cursor. A cold path means no observations in the interval, not proof that the firmware did no work; partial history and trace gaps are labelled.

Selecting and inspecting

Click a node to select it. The inspector on the right switches to that object: its kind, observation count and state at the cursor.

ProcessorTask selected with Focus selected connections on: only its own links stay lit.
PROCESSORTASK SELECTED WITH FOCUS SELECTED CONNECTIONS ON: ONLY ITS OWN LINKS STAY LIT

The inspector has four tabs:

TAB WHAT IT SHOWS
ActivityEvery observation at or before the cursor, newest first. Expand one to read its time, endpoints, value and outcome; Timeline jumps there.
ConnectionsThe selected object's links with counts for the mapped range, the attribution and the first event.
DetailsA legend for the map's cues: pending stacks, pulses, failure and contention marks, dimmed tasks.
FiltersObject rules and the Issues only preset (below).
The Connections tab for ProcessorTask: acquire, receive, release and wait counts per link.
THE CONNECTIONS TAB FOR PROCESSORTASK: ACQUIRE, RECEIVE, RELEASE AND WAIT COUNTS PER LINK

Expand an event in the Activity list to pin it on the map; the event is outlined where it happened.

A notification timeout expanded in the Activity list, with its time, endpoints and value.
A NOTIFICATION TIMEOUT EXPANDED IN THE ACTIVITY LIST, WITH ITS TIME, ENDPOINTS AND VALUE

Filters

Issues only (the chip at the top left) keeps failures, timeouts and contention across every object and hides the rest of the traffic. It pauses your saved object rules while it is on.

Issues only: just failures, timeouts and mutex contention, with the list on the right.
ISSUES ONLY: JUST FAILURES, TIMEOUTS AND MUTEX CONTENTION, WITH THE LIST ON THE RIGHT

For one object, add it on the Filters tab and pick a mode:

  • Isolate hides all other traffic. Several Isolate rules combine.
  • Highlight emphasizes the matches and keeps everything else visible.
  • Off keeps the rule saved without applying it.

Tags narrow a rule to Failed, Contended, Waiting or Other activity. Contended means the mutex was held when requested; Waiting means an observed blocked wait. Neither alone means the operation failed. Filters change this view only, never the capture or an export.

ContentionMutex isolated: 241 of 15,824 observations remain, all its own traffic.
CONTENTIONMUTEX ISOLATED: 241 OF 15,824 OBSERVATIONS REMAIN, ALL ITS OWN TRAFFIC

Table

Table in the panel header shows the same data as rows: one per object (or per task and interrupt), with peers, operations, contended count, failed or timed-out count and the last activity. Expand a row for its connections. Sort by any column; search filters by name or kind.

The Table view: objects with operation, contention and failure counts.
THE TABLE VIEW: OBJECTS WITH OPERATION, CONTENTION AND FAILURE COUNTS

Gear menu

The gear menu.
THE GEAR MENU
SETTING WHAT IT DOES
LayoutConstellation, Centered, Hierarchy, Organized or Linear (above).
Focus selected connectionsWith a node selected, dims everything that is not directly connected to it.
Ring / column labelsShows the band names (Organized) and column names (Linear).
Show object labelsShows the name beside every node. Turn it off on very large maps.
Group by heatArranges nodes by traffic heat (see Heat).
BackpressureShows pending queue items and notification counts as dots on the object.
Animated trafficMoves dots along links for events near the cursor. Off gives a still picture.
Enhance issuesMakes failure, timeout and contention cues more prominent on a busy map, independent of glow.
Traffic heatColours links by traffic volume (see Heat).
Dim inactive tasksFades tasks observed sleeping, blocked, suspended or deleted at the cursor; tasks with no known state stay neutral.
Edge opacityHow strongly links are drawn. Lower it to see nodes through dense traffic.
Glow strengthHalo intensity around nodes, 0 to 4.
Element sizeScales nodes, dots and labels together without changing the zoom.

Export map writes the current map as a .vamap file for sharing or for later comparison.

Replay

Replay running at 0.1x: the map, the Timeline cursor and the readout in the top bar move together.
REPLAY RUNNING AT 0.1X: THE MAP, THE TIMELINE CURSOR AND THE READOUT IN THE TOP BAR MOVE TOGETHER

With a recording open, the capsule in the top bar shows REPLAY beside REC. Click it and the capsule turns into the replay controls:

The replay controls: restart, reverse, play or pause, loop, speed, the cursor time, and exit.
THE REPLAY CONTROLS: RESTART, REVERSE, PLAY OR PAUSE, LOOP, SPEED, THE CURSOR TIME, AND EXIT
CONTROL WHAT IT DOES
RestartMoves the cursor back to the start of the recording (or of the selection) and keeps playing if it was.
ReversePlays backward; click again to pause.
Play / PausePlays forward from the cursor, or pauses.
LoopWraps around at the end instead of stopping.
Speed0.01x to 2x recording time. Slow speeds make individual events readable.
TimeThe cursor time; hovering a control shows its name here instead.
ExitPauses and brings back REC, OPEN and SAVE. The cursor stays where playback stopped.

Replay moves the shared cursor, so every cursor-linked view follows: the map, the Timeline, the charts and (with follow on) the Event Table. With a Timeline selection, replay stays inside it. Replay keeps running when the map is closed.