base-4.6.0.1: Basic libraries

Safe Haskell | Safe

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.

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.

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`.

getGCStatsEnabled :: IO Bool