summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-10-29 18:51:12 -0400
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-12-10 19:53:54 -0500
commit843ceb3892432b28628e4b4bad2c712ca371d02b (patch)
tree6553b70012826e7f80190f68120111a27cb649f8
parente3bba7e4b221139090edf54a18c7e0e1ec3f9be8 (diff)
downloadhaskell-843ceb3892432b28628e4b4bad2c712ca371d02b.tar.gz
rts: Add a long form flag to enable the non-moving GC
The old flag, `-xn`, was quite cryptic. Here we add `--nonmoving-gc` in addition.
-rw-r--r--docs/users_guide/runtime_control.rst20
-rw-r--r--rts/RtsFlags.c5
2 files changed, 19 insertions, 6 deletions
diff --git a/docs/users_guide/runtime_control.rst b/docs/users_guide/runtime_control.rst
index f6dd9a62e8..2fb1917d2c 100644
--- a/docs/users_guide/runtime_control.rst
+++ b/docs/users_guide/runtime_control.rst
@@ -356,7 +356,7 @@ collection. Hopefully, you won't need any of these in normal operation,
but there are several things that can be tweaked for maximum
performance.
-.. rts-flag:: -xn
+.. rts-flag:: --nonmoving-gc
:default: off
:since: 8.10.1
@@ -367,12 +367,20 @@ performance.
Enable the concurrent mark-and-sweep garbage collector for old generation
collectors. Typically GHC uses a stop-the-world copying garbage collector
for all generations. This can cause long pauses in execution during major
- garbage collections. :rts-flag:`-xn` enables the use of a concurrent
- mark-and-sweep garbage collector for oldest generation collections.
- Under this collection strategy oldest-generation garbage collection
- can proceed concurrently with mutation.
+ garbage collections. :rts-flag:`--nonmoving-gc` enables the use of a
+ concurrent mark-and-sweep garbage collector for oldest generation
+ collections. Under this collection strategy oldest-generation garbage
+ collection can proceed concurrently with mutation.
+
+ Note that :rts-flag:`--nonmoving-gc` cannot be used with ``-G1`` nor
+ :rts-flag:`-c`.
+
+.. rts-flag:: -xn
+
+ :default: off
+ :since: 8.10.1
- Note that :rts-flag:`-xn` cannot be used with ``-G1`` nor :rts-flag:`-c`.
+ An alias for :rts-flag:`--nonmoving-gc`
.. rts-flag:: -A ⟨size⟩
diff --git a/rts/RtsFlags.c b/rts/RtsFlags.c
index 7949d401db..54680b4b7f 100644
--- a/rts/RtsFlags.c
+++ b/rts/RtsFlags.c
@@ -931,6 +931,11 @@ error = true;
printRtsInfo(rtsConfig);
stg_exit(0);
}
+ else if (strequal("nonmoving-gc",
+ &rts_argv[arg][2])) {
+ OPTION_SAFE;
+ RtsFlags.GcFlags.useNonmoving = true;
+ }
#if defined(THREADED_RTS)
else if (!strncmp("numa", &rts_argv[arg][2], 4)) {
if (!osBuiltWithNumaSupport()) {