base-4.8.2.0: Basic libraries

Safe Haskell | Trustworthy
Language | Haskell2010

GHC.Stats

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: 4.5.0.0

Synopsis

- data GCStats = GCStats {
  - bytesAllocated :: !Int64
  - numGcs :: !Int64
  - maxBytesUsed :: !Int64
  - numByteUsageSamples :: !Int64
  - cumulativeBytesUsed :: !Int64
  - bytesCopied :: !Int64
  - currentBytesUsed :: !Int64
  - currentBytesSlop :: !Int64
  - maxBytesSlop :: !Int64
  - peakMegabytesAllocated :: !Int64
  - mutatorCpuSeconds :: !Double
  - mutatorWallSeconds :: !Double
  - gcCpuSeconds :: !Double
  - gcWallSeconds :: !Double
  - cpuSeconds :: !Double
  - wallSeconds :: !Double
  - parTotBytesCopied :: !Int64
  - parMaxBytesCopied :: !Int64
  }
- getGCStats :: IO GCStats
- getGCStatsEnabled :: IO Bool

# Documentation

data GCStats

Global garbage collection and memory statistics.

Since: 4.5.0.0

Constructors

GCStats |

Fields

bytesAllocated :: !Int64

  Total number of bytes allocated

numGcs :: !Int64

  Number of garbage collections performed

maxBytesUsed :: !Int64

  Maximum number of live bytes seen so far

numByteUsageSamples :: !Int64

  Number of byte usage samples taken | Sum of all byte usage samples, can be used with `numByteUsageSamples` to calculate averages with arbitrary weighting (if you are sampling this record multiple times).

cumulativeBytesUsed :: !Int64
bytesCopied :: !Int64

  Number of bytes copied during GC

currentBytesUsed :: !Int64

  Current number of live bytes

currentBytesSlop :: !Int64

  Current number of bytes lost to slop

maxBytesSlop :: !Int64

  Maximum number of bytes lost to slop at any one time so far

peakMegabytesAllocated :: !Int64

  Maximum number of megabytes allocated | CPU time spent running mutator threads. This does not include any profiling overhead or initialization.

mutatorCpuSeconds :: !Double
mutatorWallSeconds :: !Double

  Wall clock time spent running mutator threads. This does not include initialization.

gcCpuSeconds :: !Double

  CPU time spent running GC

gcWallSeconds :: !Double

  Wall clock time spent running GC

cpuSeconds :: !Double

  Total CPU time elapsed since program start

wallSeconds :: !Double

  Total wall clock time elapsed since start | Number of bytes copied during GC, minus space held by mutable lists held by the capabilities. Can be used with `parMaxBytesCopied` to determine how well parallel GC utilized all cores.

parTotBytesCopied :: !Int64
parMaxBytesCopied :: !Int64

  Sum of number of bytes copied each GC by the most active GC thread each GC. The ratio of `parTotBytesCopied` divided by `parMaxBytesCopied` approaches 1 for a maximally sequential run and approaches the number of threads (set by the RTS flag `-N`) for a maximally parallel run.

Instances

Read GCStats |
Show GCStats |

getGCStats :: IO GCStats

Retrieves garbage collection and memory statistics as of the last garbage collection. If you would like your statistics as recent as possible, first run a `performGC`.

Since: 4.5.0.0

getGCStatsEnabled :: IO Bool

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

Since: 4.6.0.0