#5705: getGCStats only works with +RTS -s
------------------------------+---------------------------------------------
 Reporter:  tibbe             |          Owner:                  
     Type:  bug               |         Status:  new             
 Priority:  normal            |      Component:  Runtime System  
  Version:  7.2.1             |       Keywords:                  
       Os:  Unknown/Multiple  |   Architecture:  Unknown/Multiple
  Failure:  None/Unknown      |       Testcase:                  
Blockedby:                    |       Blocking:                  
  Related:                    |  
------------------------------+---------------------------------------------
Description changed by tibbe:

Old description:

> As the below program shows, `GHC.Stats.getGCStats` only returns non-zero
> values for e.g. `gc_wall_time` if the program is run with `+RTS -s`. I
> guess that's because the stats aren't tracked by the GC unless you
> specify `+RTS -s`. Are the stats expensive to maintain? If not could we
> always update these counters?
>
> {{{
> module Main where
>
> import GHC.Stats
> import System.Mem
>
> main = do
>     print $ let xs = [1..1000000]  -- allocation
>             in fromIntegral (sum xs) / fromIntegral (length xs)
>     performGC
>     stats <- getGCStats
>     putStrLn $ show stats
> }}}
>
> {{{
> $ ./Repro
> 500000.5
> GCStats {bytesAllocated = 0, numGcs = 184, maxBytesUsed = 0,
> numByteUsageSamples = 0, cumulativeBytesUsed = 0, bytesCopied = 0,
> currentBytesUsed = 0, currentBytesSlop = 0, maxBytesSlop = 0,
> peakMegabytesAllocated = 63, mutatorCpuSeconds = 9.6468e-2,
> mutatorWallSeconds = 0.115874, gcCpuSeconds = 0.0,
> gcWallSeconds = 0.0, cpuSeconds = 9.7045e-2, wallSeconds = 0.115874,
> parAvgBytesCopied = 0, parMaxBytesCopied = 0}
> }}}
>
> {{{
> 500000.5
> GCStats {bytesAllocated = 96086504, numGcs = 184, maxBytesUsed =
> 27442272,
> numByteUsageSamples = 7, cumulativeBytesUsed = 52228768, bytesCopied =
> 90580024,
> currentBytesUsed = 74336, currentBytesSlop = 0, maxBytesSlop = 6803872,
> peakMegabytesAllocated = 63, mutatorCpuSeconds = 2.523e-2,
> mutatorWallSeconds = 2.5739e-2, gcCpuSeconds = 7.1919e-2,
> gcWallSeconds = 9.126e-2, cpuSeconds = 9.7729e-2, wallSeconds = 0.116999,
> parAvgBytesCopied = 0, parMaxBytesCopied = 0}
> ...
> }}}

New description:

 As the below program shows, `GHC.Stats.getGCStats` only returns non-zero
 values for e.g. `gc_wall_time` if the program is run with `+RTS -s`. I
 guess that's because the stats aren't tracked by the GC unless you specify
 `+RTS -s`. Are the stats expensive to maintain? If not could we always
 update these counters?

 {{{
 module Main where

 import GHC.Stats
 import System.Mem

 main = do
     print $ let xs = [1..1000000]  -- allocation
             in fromIntegral (sum xs) / fromIntegral (length xs)
     performGC
     stats <- getGCStats
     putStrLn $ show stats
 }}}

 {{{
 $ ./Repro
 500000.5
 GCStats {bytesAllocated = 0, numGcs = 184, maxBytesUsed = 0,
 numByteUsageSamples = 0, cumulativeBytesUsed = 0, bytesCopied = 0,
 currentBytesUsed = 0, currentBytesSlop = 0, maxBytesSlop = 0,
 peakMegabytesAllocated = 63, mutatorCpuSeconds = 9.6468e-2,
 mutatorWallSeconds = 0.115874, gcCpuSeconds = 0.0,
 gcWallSeconds = 0.0, cpuSeconds = 9.7045e-2, wallSeconds = 0.115874,
 parAvgBytesCopied = 0, parMaxBytesCopied = 0}
 }}}

 {{{
 $ ./Repro +RTS -s
 500000.5
 GCStats {bytesAllocated = 96086504, numGcs = 184, maxBytesUsed = 27442272,
 numByteUsageSamples = 7, cumulativeBytesUsed = 52228768, bytesCopied =
 90580024,
 currentBytesUsed = 74336, currentBytesSlop = 0, maxBytesSlop = 6803872,
 peakMegabytesAllocated = 63, mutatorCpuSeconds = 2.523e-2,
 mutatorWallSeconds = 2.5739e-2, gcCpuSeconds = 7.1919e-2,
 gcWallSeconds = 9.126e-2, cpuSeconds = 9.7729e-2, wallSeconds = 0.116999,
 parAvgBytesCopied = 0, parMaxBytesCopied = 0}
 ...
 }}}

--

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/5705#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler

_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to