summaryrefslogtreecommitdiff
path: root/docs/users_guide/runtime_control.rst
diff options
context:
space:
mode:
Diffstat (limited to 'docs/users_guide/runtime_control.rst')
-rw-r--r--docs/users_guide/runtime_control.rst15
1 files changed, 11 insertions, 4 deletions
diff --git a/docs/users_guide/runtime_control.rst b/docs/users_guide/runtime_control.rst
index 5d3b24adac..49dc6a5441 100644
--- a/docs/users_guide/runtime_control.rst
+++ b/docs/users_guide/runtime_control.rst
@@ -420,7 +420,7 @@ performance.
.. rts-flag:: -A ⟨size⟩
- :default: 1MB
+ :default: 4MB
.. index::
single: allocation area, size
@@ -429,15 +429,22 @@ performance.
collector. The allocation area (actually generation 0 step 0) is
fixed and is never resized (unless you use :rts-flag:`-H [⟨size⟩]`, below).
- Increasing the allocation area size may or may not give better
- performance (a bigger allocation area means worse cache behaviour
- but fewer garbage collections and less promotion).
+ Optimal settings depend on the actual machine, program, and other RTS options.
+ Increasing the allocation area size means worse cache behaviour
+ but fewer garbage collections and less promotion.
+
+ In general settings >= 4MB can reduce performance in some cases, in particular for single
+ threaded operation. However in a parallel setting increasing the allocation area
+ to ``16MB``, or even ``64MB`` can increase gc throughput significantly.
With only 1 generation (e.g. ``-G1``, see :rts-flag:`-G ⟨generations⟩`) the
``-A`` option specifies the minimum allocation area, since the actual size
of the allocation area will be resized according to the amount of data in
the heap (see :rts-flag:`-F ⟨factor⟩`, below).
+ When heap profiling using a smaller allocation area can increase accuracy as more frequent
+ major garbage collections also results in more frequent heap snapshots
+
.. rts-flag:: -AL ⟨size⟩
:default: :rts-flag:`-A <-A ⟨size⟩>` value