ghc-events-0.13.0: Library and tool for parsing .eventlog files from GHC

Safe Haskell None Haskell98

GHC.RTS.Events.Analysis.Capability

Synopsis

# Documentation

This state machine tracks threads residing on capabilities. Each thread can only reside on one capability, but can be migrated between them.

This state machine tracks threads running on capabilities, only one thread may run on a capability at a time.

This state machine tracks Haskell tasks, represented by TaskId, residing on capabilities. Each Haskell task can only reside on one capability, but can be migrated between them.

This state machine tracks Haskell tasks (represented by the KernelThreadId of their OS thread) residing on capabilities and additionally tracks the (immutable) assignment of OS thread ids (KernelThreadId) to tasks ids (TaskId). Each Haskell task can only reside on one capability, but can be migrated between them.

Invariant for the (Map KernelThreadId Int, Map TaskId KernelThreadId) type: the second map is an injection (verified by the machine in insertTaskOS) and the following sets are equal: keys of the fist map and values of the second (follows from the construction of the maps by the machine).

The machine verifies as much as capabilityTaskPoolMachine and additionally the data invariant, and offers a richer verification profile.