[GHC] #16102: forkProcess causes weird GC summary in the child process
GHC
ghc-devs at haskell.org
Thu Jan 17 17:47:05 UTC 2019
#16102: forkProcess causes weird GC summary in the child process
-------------------------------------+-------------------------------------
Reporter: osa1 | Owner: (none)
Type: bug | Status: closed
Priority: normal | Milestone:
Component: Runtime System | Version: 8.6.3
Resolution: fixed | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by Ömer Sinan Ağacan <omeragacan@…>):
In [changeset:"19670bc397d858b04eb9b4eb01480f7f8c59e2f5/ghc"
19670bc3/ghc]:
{{{
#!CommitTicketReference repository="ghc"
revision="19670bc397d858b04eb9b4eb01480f7f8c59e2f5"
Fix negative mutator time in GC stats in prof builds
Because garbage collector calls `retainerProfile()` and `heapCensus()`,
GC times normally include some of PROF times too. To fix this we have
these lines:
// heapCensus() is called by the GC, so RP and HC time are
// included in the GC stats. We therefore subtract them to
// obtain the actual GC cpu time.
stats.gc_cpu_ns -= prof_cpu;
stats.gc_elapsed_ns -= prof_elapsed;
These variables are later used for calculating GC time excluding the
final GC (which should be attributed to EXIT).
exit_gc_elapsed = stats.gc_elapsed_ns - start_exit_gc_elapsed;
The problem is if we subtract PROF times from `gc_elapsed_ns` and then
subtract `start_exit_gc_elapsed` from the result, we end up subtracting
PROF times twice, because `start_exit_gc_elapsed` also includes PROF
times.
We now subtract PROF times from GC after the calculations for EXIT and
MUT times. The existing assertion that checks
INIT + MUT + GC + EXIT = TOTAL
now holds. When we subtract PROF numbers from GC, and a new assertion
INIT + MUT + GC + PROF + EXIT = TOTAL
also holds.
Fixes #15897. New assertions added in this commit also revealed #16102,
which is also fixed by this commit.
}}}
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/16102#comment:10>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list