Skip to content

GC timing stats (e.g. mutator_elapsed_ns) decrease over time

See this measurement code here in the gauge benchmarking tool, which is a clone of the criterion benchmarking tool. : https://github.com/harendra-kumar/hs-gauge/blob/f8c9bcd6ee03c3090f110664ff279a20f2da9130/Gauge/Measurement.hs#L315 . This code displays debug prints when the end time is lower than the start time for mutator_elapsed_ns.

When we run this benchmark defined in https://github.com/harendra-kumar/hs-gauge/blob/f8c9bcd6ee03c3090f110664ff279a20f2da9130/benchs/GCBug.hs the following output is produced:

$ stack bench --benchmark-arguments "--quick"
gauge-0.1.3: benchmarks
Running 1 benchmarks...
Benchmark gcbug: RUNNING...
benchmarking streamingDecreased by: 25818791 : s = 59840178 e = 34021387
Decreased by: 22707134 : s = 76706673 e = 53999539
Decreased by: 4776100 : s = 96201146 e = 91425046
streaming                                time                 50.00 ms  

benchmarking pipesDecreased by: 12487955 : s = 153949495 e = 141461540
pipes                                    time                 50.00 ms  

benchmarking conduitDecreased by: 5523916 : s = 310913002 e = 305389086
conduit                                  time                 50.00 ms  

Benchmark gcbug: FINISH

Notice the "Decreased by" getting printed quite a few times. I have found it to be more likely for these particular libraries i.e. streaming, pipes and conduit; so I have used only these in the benchmarking file GCBug.hs. I tried some other streaming libraries as well but it did not occur often in those cases. In these cases it occurs almost every time. I am running it on a macbook.

The repository is here: https://github.com/harendra-kumar/hs-gauge/tree/gc-bug . The branch in the repo is gc-bug. You can run the benchmark named gcbug using the command stack bench --benchmark-arguments "--quick" to reproduce the output above.

Trac metadata
Trac field Value
Version 8.2.1
Type Bug
TypeOfFailure OtherFailure
Priority normal
Resolution Unresolved
Component Runtime System
Test case
Differential revisions
BlockedBy
Related
Blocking
CC
Operating system
Architecture
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information