From 02543d5ef9bd7a910fc9fece895780583ab9635a Mon Sep 17 00:00:00 2001
From: Ben Gamari <ben@smart-cactus.org>
Date: Thu, 23 Apr 2020 23:20:48 -0400
Subject: [PATCH] users guide: Add documentation for non-moving GC events

---
 docs/users_guide/eventlog-formats.rst | 79 +++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)

diff --git a/docs/users_guide/eventlog-formats.rst b/docs/users_guide/eventlog-formats.rst
index f50285890a6e..f21d45fb6b01 100644
--- a/docs/users_guide/eventlog-formats.rst
+++ b/docs/users_guide/eventlog-formats.rst
@@ -676,3 +676,82 @@ A variable-length packet encoding a profile sample.
 
    TODO
 
+.. _nonmoving-gc-events:
+
+Non-moving GC event output
+--------------------------
+
+These events mark various stages of the
+:rts-flag:`non-moving collection <--nonmoving-gc>` lifecycle. These are enabled
+with the ``+RTS -lg`` event-set.
+
+.. event-type:: CONC_MARK_BEGIN
+
+   :tag: 200
+   :length: fixed
+
+   Marks the beginning of marking by the concurrent collector.
+
+.. event-type:: CONC_MARK_END
+
+   :tag: 201
+   :length: fixed
+
+   Marks the end of marking by the concurrent collector.
+
+.. event-type:: CONC_SYNC_BEGIN
+
+   :tag: 202
+   :length: fixed
+
+   Marks the beginning of the concurrent garbage collector's
+   post-mark synchronization phase.
+
+.. event-type:: CONC_SYNC_END
+
+   :tag: 203
+   :length: fixed
+
+   Marks the end of the concurrent garbage collector's
+   post-mark synchronization phase.
+
+.. event-type:: CONC_SWEEP_BEGIN
+
+   :tag: 204
+   :length: fixed
+
+   Marks the beginning of the concurrent garbage collector's
+   sweep phase.
+
+.. event-type:: CONC_SWEEP_END
+
+   :tag: 205
+   :length: fixed
+
+   Marks the end of the concurrent garbage collector's
+   sweep phase.
+
+.. event-type:: CONC_UPD_REM_SET_FLUSH
+
+   :tag: 206
+   :length: fixed
+
+   Marks a capability flushing its local update remembered set
+   accumulator.
+
+Non-moving heap census
+~~~~~~~~~~~~~~~~~~~~~~
+
+The non-moving heap census events (enabled with the ``+RTS -ln`` event-set) are
+intended to provide insight into fragmentation of the non-moving heap.
+
+.. event-type:: NONMOVING_HEAP_CENSUS
+
+   :tag: 207
+   :length: fixed
+   :field Word8: base-2 logarithm of *blk_sz*.
+   :field Word32: number of active segments.
+   :field Word32: number of filled segments.
+   :field Word32: number of live blocks.
+
+   Describes the occupancy of the *blk_sz* sub-heap.
-- 
GitLab