Statistics about a single GC. This is a mirror of the C struct
GCDetails in RtsAPI.h, with the field prefixed with gc_ to
avoid collisions with RTSStats.
Constructors
GCDetailsgcdetails_gen :: Word32The generation number of this GC
gcdetails_threads :: Word32Number of threads used in this GC
gcdetails_allocated_bytes :: Word64Number of bytes allocated since the previous GC
gcdetails_live_bytes :: Word64Total amount of live data in the heap (includes large + compact data). Updated after every GC. Data in uncollected generations (in minor GCs) are considered live.
gcdetails_large_objects_bytes :: Word64Total amount of live data in large objects
gcdetails_compact_bytes :: Word64Total amount of live data in compact regions
gcdetails_slop_bytes :: Word64Total amount of slop (wasted memory)
gcdetails_mem_in_use_bytes :: Word64Total amount of memory in use by the RTS
gcdetails_copied_bytes :: Word64Total amount of data copied during this GC
gcdetails_par_max_copied_bytes :: Word64In parallel GC, the max amount of data copied by any one thread. Deprecated.
gcdetails_par_balanced_copied_bytes :: Word64In parallel GC, the amount of balanced data copied by all threads
gcdetails_block_fragmentation_bytes :: Word64The amount of memory lost due to block fragmentation in bytes. Block fragmentation is the difference between the amount of blocks retained by the RTS and the blocks that are in use. This occurs when megablocks are only sparsely used, eg, when data that cannot be moved retains a megablock.
gcdetails_sync_elapsed_ns :: RtsTimeThe time elapsed during synchronisation before GC
gcdetails_cpu_ns :: RtsTimeThe CPU time used during GC itself
gcdetails_elapsed_ns :: RtsTimeThe time elapsed during GC itself
gcdetails_nonmoving_gc_sync_cpu_ns :: RtsTimeThe CPU time used during the post-mark pause phase of the concurrent nonmoving GC.
gcdetails_nonmoving_gc_sync_elapsed_ns :: RtsTimeThe time elapsed during the post-mark pause phase of the concurrent nonmoving GC.
Instances4Read, Show, Generic, Rep
Read GCDetailsDefined in ghc-internal-9.1003.0 · GHC.Internal.StatsShow GCDetailsDefined in ghc-internal-9.1003.0 · GHC.Internal.StatsGeneric GCDetailsDefined in ghc-internal-9.1003.0 · GHC.Internal.Statstype Rep GCDetails = D1 ('MetaDataDefined in ghc-internal-9.1003.0 · GHC.Internal.Stats"GCDetails"
"GHC.Internal.Stats"
"ghc-internal"
'False) (C1 ('MetaCons"GCDetails"
'PrefixI 'True) ((((S1 ('MetaSel ('Just"gcdetails_gen"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word32) :*: S1 ('MetaSel ('Just"gcdetails_threads"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word32)) :*: (S1 ('MetaSel ('Just"gcdetails_allocated_bytes"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64) :*: S1 ('MetaSel ('Just"gcdetails_live_bytes"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64))) :*: ((S1 ('MetaSel ('Just"gcdetails_large_objects_bytes"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64) :*: S1 ('MetaSel ('Just"gcdetails_compact_bytes"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64)) :*: (S1 ('MetaSel ('Just"gcdetails_slop_bytes"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64) :*: S1 ('MetaSel ('Just"gcdetails_mem_in_use_bytes"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64)))) :*: (((S1 ('MetaSel ('Just"gcdetails_copied_bytes"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64) :*: S1 ('MetaSel ('Just"gcdetails_par_max_copied_bytes"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64)) :*: (S1 ('MetaSel ('Just"gcdetails_par_balanced_copied_bytes"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64) :*: S1 ('MetaSel ('Just"gcdetails_block_fragmentation_bytes"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 Word64))) :*: ((S1 ('MetaSel ('Just"gcdetails_sync_elapsed_ns"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RtsTime) :*: S1 ('MetaSel ('Just"gcdetails_cpu_ns"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RtsTime)) :*: (S1 ('MetaSel ('Just"gcdetails_elapsed_ns"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RtsTime) :*: (S1 ('MetaSel ('Just"gcdetails_nonmoving_gc_sync_cpu_ns"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RtsTime) :*: S1 ('MetaSel ('Just"gcdetails_nonmoving_gc_sync_elapsed_ns"
) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 RtsTime)))))))