[project @ 2005-05-16 14:27:07 by simonmar]
authorsimonmar <unknown>
Mon, 16 May 2005 14:27:08 +0000 (14:27 +0000)
committersimonmar <unknown>
Mon, 16 May 2005 14:27:08 +0000 (14:27 +0000)
commit33a84b8c79f0ccd2400996a0e571b0659d4c16ed
treea824469f35636a7f804d0d17fdc85a231169e8aa
parent34c2b1b2cdc009b62402bd1c31ffc1ae17df8969
[project @ 2005-05-16 14:27:07 by simonmar]
Allow the amount of idle time which must pass before we force a major
GC to be configured at runtime with the +RTS -I<secs> option.

The idle GC only happens in the threaded RTS, and it is useful because
it can make finalizers run more promptly, and also detect cases of
deadlock.  Without the idle GC, Haskell computation must be taking
place in order for finalizers to run or deadlock to be detected, and
the only way some Haskell computation can take place is usually by
in-calls.

+RTS -I0 turns off the idle GC, the default is +RTS -I0.3.

We might need to add more tuning if it turns out that the idle GC is
problematic, for example we don't check how long the GC actually took,
and we should probably back off if major GCs are taking too long and
adversely affecting interactive responsiveness.
ghc/includes/RtsFlags.h
ghc/rts/RtsFlags.c
ghc/rts/Timer.c