GHC.Stats

base-4.12.0.0: Basic libraries

Safe Haskell | Trustworthy
Language | Haskell2010

GHC.Stats

Contents

- Runtime statistics

Description

This module provides access to internal garbage collection and memory usage statistics. These statistics are not available unless a program is run with the `-T` RTS flag.

This module is GHC-only and should not be considered portable.

Since: base-4.5.0.0

Synopsis

- data RTSStats = RTSStats {
  - gcs :: Word32
  - major_gcs :: Word32
  - allocated_bytes :: Word64
  - max_live_bytes :: Word64
  - max_large_objects_bytes :: Word64
  - max_compact_bytes :: Word64
  - max_slop_bytes :: Word64
  - max_mem_in_use_bytes :: Word64
  - cumulative_live_bytes :: Word64
  - copied_bytes :: Word64
  - par_copied_bytes :: Word64
  - cumulative_par_max_copied_bytes :: Word64
  - cumulative_par_balanced_copied_bytes :: Word64
  - init_cpu_ns :: RtsTime
  - init_elapsed_ns :: RtsTime
  - mutator_cpu_ns :: RtsTime
  - mutator_elapsed_ns :: RtsTime
  - gc_cpu_ns :: RtsTime
  - gc_elapsed_ns :: RtsTime
  - cpu_ns :: RtsTime
  - elapsed_ns :: RtsTime
  - gc :: GCDetails
  }
- data GCDetails = GCDetails {
  - gcdetails_gen :: Word32
  - gcdetails_threads :: Word32
  - gcdetails_allocated_bytes :: Word64
  - gcdetails_live_bytes :: Word64
  - gcdetails_large_objects_bytes :: Word64
  - gcdetails_compact_bytes :: Word64
  - gcdetails_slop_bytes :: Word64
  - gcdetails_mem_in_use_bytes :: Word64
  - gcdetails_copied_bytes :: Word64
  - gcdetails_par_max_copied_bytes :: Word64
  - gcdetails_par_balanced_copied_bytes :: Word64
  - gcdetails_sync_elapsed_ns :: RtsTime
  - gcdetails_cpu_ns :: RtsTime
  - gcdetails_elapsed_ns :: RtsTime
  }
- type RtsTime = Int64
- getRTSStats :: IO RTSStats
- getRTSStatsEnabled :: IO Bool

# Runtime statistics

data RTSStats #

Statistics about runtime activity since the start of the program. This is a mirror of the C `struct RTSStats` in `RtsAPI.h`

Since: base-4.10.0.0

Constructors

RTSStats |
Fields gcs :: Word32 Total number of GCs major_gcs :: Word32 Total number of major (oldest generation) GCs allocated_bytes :: Word64 Total bytes allocated max_live_bytes :: Word64 Maximum live data (including large objects + compact regions) in the heap. Updated after a major GC. max_large_objects_bytes :: Word64 Maximum live data in large objects max_compact_bytes :: Word64 Maximum live data in compact regions max_slop_bytes :: Word64 Maximum slop max_mem_in_use_bytes :: Word64 Maximum memory in use by the RTS cumulative_live_bytes :: Word64 Sum of live bytes across all major GCs. Divided by major_gcs gives the average live data over the lifetime of the program. copied_bytes :: Word64 Sum of copied_bytes across all GCs par_copied_bytes :: Word64 Sum of copied_bytes across all parallel GCs cumulative_par_max_copied_bytes :: Word64 Sum of par_max_copied_bytes across all parallel GCs. Deprecated. cumulative_par_balanced_copied_bytes :: Word64 Sum of par_balanced_copied bytes across all parallel GCs init_cpu_ns :: RtsTime Total CPU time used by the init phase @since 4.12.0.0 init_elapsed_ns :: RtsTime Total elapsed time used by the init phase @since 4.12.0.0 mutator_cpu_ns :: RtsTime Total CPU time used by the mutator mutator_elapsed_ns :: RtsTime Total elapsed time used by the mutator gc_cpu_ns :: RtsTime Total CPU time used by the GC gc_elapsed_ns :: RtsTime Total elapsed time used by the GC cpu_ns :: RtsTime Total CPU time (at the previous GC) elapsed_ns :: RtsTime Total elapsed time (at the previous GC) gc :: GCDetails Details about the most recent GC

Instances

Read RTSStats # | Since: base-4.10.0.0
Instance details Defined in GHC.Stats Methods readsPrec :: Int -> ReadS RTSStats # readList :: ReadS [RTSStats] # readPrec :: ReadPrec RTSStats # readListPrec :: ReadPrec [RTSStats] #
Show RTSStats # | Since: base-4.10.0.0
Instance details Defined in GHC.Stats Methods showsPrec :: Int -> RTSStats -> ShowS # show :: RTSStats -> String # showList :: [RTSStats] -> ShowS #

data GCDetails #

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

GCDetails |
Fields gcdetails_gen :: Word32 The generation number of this GC gcdetails_threads :: Word32 Number of threads used in this GC gcdetails_allocated_bytes :: Word64 Number of bytes allocated since the previous GC gcdetails_live_bytes :: Word64 Total amount of live data in the heap (incliudes large + compact data). Updated after every GC. Data in uncollected generations (in minor GCs) are considered live. gcdetails_large_objects_bytes :: Word64 Total amount of live data in large objects gcdetails_compact_bytes :: Word64 Total amount of live data in compact regions gcdetails_slop_bytes :: Word64 Total amount of slop (wasted memory) gcdetails_mem_in_use_bytes :: Word64 Total amount of memory in use by the RTS gcdetails_copied_bytes :: Word64 Total amount of data copied during this GC gcdetails_par_max_copied_bytes :: Word64 In parallel GC, the max amount of data copied by any one thread. Deprecated. gcdetails_par_balanced_copied_bytes :: Word64 In parallel GC, the amount of balanced data copied by all threads gcdetails_sync_elapsed_ns :: RtsTime The time elapsed during synchronisation before GC gcdetails_cpu_ns :: RtsTime The CPU time used during GC itself gcdetails_elapsed_ns :: RtsTime The time elapsed during GC itself

Instances

Read GCDetails # | Since: base-4.10.0.0
Instance details Defined in GHC.Stats Methods readsPrec :: Int -> ReadS GCDetails # readList :: ReadS [GCDetails] # readPrec :: ReadPrec GCDetails # readListPrec :: ReadPrec [GCDetails] #
Show GCDetails # | Since: base-4.10.0.0
Instance details Defined in GHC.Stats Methods showsPrec :: Int -> GCDetails -> ShowS # show :: GCDetails -> String # showList :: [GCDetails] -> ShowS #

type RtsTime = Int64 #

Time values from the RTS, using a fixed resolution of nanoseconds.

getRTSStats :: IO RTSStats #

Get current runtime system statistics.

Since: base-4.10.0.0

getRTSStatsEnabled :: IO Bool #

Returns whether GC stats have been enabled (with `+RTS -T`, for example).

Since: base-4.10.0.0