[commit: ghc] wip/eventlog-heap-profile: Documentation (237f7ab)
git at git.haskell.org
git at git.haskell.org
Sat Mar 26 00:58:17 UTC 2016
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/eventlog-heap-profile
Link : http://ghc.haskell.org/trac/ghc/changeset/237f7abac1730347e03e4dccf1c05909a79d50cb/ghc
>---------------------------------------------------------------
commit 237f7abac1730347e03e4dccf1c05909a79d50cb
Author: Ben Gamari <ben at smart-cactus.org>
Date: Thu Dec 31 19:57:10 2015 +0100
Documentation
>---------------------------------------------------------------
237f7abac1730347e03e4dccf1c05909a79d50cb
docs/users_guide/profiling.rst | 108 +++++++++++++++++++++++++++++++++++++++++
1 file changed, 108 insertions(+)
diff --git a/docs/users_guide/profiling.rst b/docs/users_guide/profiling.rst
index 4d0bb3a..2b38113 100644
--- a/docs/users_guide/profiling.rst
+++ b/docs/users_guide/profiling.rst
@@ -1361,3 +1361,111 @@ which includeds a link to the ticky-ticky profiling page.
.. [3]
This feature was added in GHC 7.4.1.
+
+
+
+Heap profiler event log output
+------------------------------
+
+The heap profiler can produce output to GHC's event log, allowing samples to
+be correlated with other events over the program's lifecycle.
+
+This section defines the layout of these events. The ``String`` type below is
+defined to be a UTF-8 encoded NUL-terminated string.
+
+Metadata event types
+~~~~~~~~~~~~~~~~~~~~
+
+Beginning of sample stream
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A single fixed-width event emitted during program start-up describing the samples that follow.
+
+ * ``EVENT_HEAP_PROF_BEGIN``
+ * ``Word8``: Profile ID
+ * ``Word64``: Sampling period in nanoseconds
+ * ``Word32``: Sample break-down type. One of,
+ * ``SAMPLE_TYPE_COST_CENTER`` (output from ``-hc``)
+ * ``SAMPLE_TYPE_CLOSURE_DESCR`` (output from ``-hd``)
+ * ``SAMPLE_TYPE_RETAINER`` (output from ``-hr``)
+ * ``SAMPLE_TYPE_MODULE`` (output from ``-hm``)
+ * ``SAMPLE_TYPE_TYPE_DESCR`` (output from ``-hy``)
+ * ``SAMPLE_TYPE_BIOGRAPHY`` (output from ``-hb``)
+ * ``String``: Cost centre filter
+ * ``String``: Closure description filter
+ * ``String``: Retainer filter
+ * ``String``: Module filter
+ * ``String``: Type description filter
+
+Cost center definitions
+^^^^^^^^^^^^^^^^^^^^^^^
+
+A variable-length packet produced once for each cost center,
+
+ * ``EVENT_HEAP_PROF_COST_CENTRE``
+ * ``Word32``: cost center number
+ * ``String``: label
+ * ``String``: module
+ * ``String``: source location
+ * ``Word8``: is a CAF?
+
+
+Sample event types
+~~~~~~~~~~~~~~~~~~
+
+A sample (consisting of a list of break-down classes, e.g. cost centers, and
+heap residency sizes), is to be encoded in the body of one or more events.
+
+We mark the beginning of a new sample with an ``EVENT_HEAP_PROF_SAMPLE_BEGIN``
+event,
+
+ * ``EVENT_HEAP_PROF_SAMPLE_BEGIN``
+ * ``Word64``: sample number
+
+A heap residency census will follow. Since events may only be up to 2^16^ bytes
+in length a single sample may need to be split among multiple
+``EVENT_HEAP_PROF_SAMPLE`` events. The precise format of the census entries is
+determined by the break-down type.
+
+
+Cost-center break-down
+^^^^^^^^^^^^^^^^^^^^^^
+
+A variable-length packet encoding a heap profile sample broken down by,
+ * cost-center (``-hc``)
+ * retainer (``-hr``)
+
+ * ``EVENT_HEAP_PROF_SAMPLE``
+ * ``Word8``: Profile ID
+ * ``Word64``: heap residency in bytes
+ * ``Word8``: stack depth
+ * ``Word32[]``: cost center stack starting with inner-most (cost center numbers)
+
+
+String break-down
+^^^^^^^^^^^^^^^^^
+
+A variable-length event encoding a heap sample broken down by,
+ * type description (``-hy``)
+ * closure description (``-hd``)
+ * module (``-hm``)
+
+ * ``EVENT_HEAP_PROF_SAMPLE``
+ * ``Word8``: Profile ID
+ * The event shall contain packed pairs of,
+ * ``String``: type description
+ * ``Word64``: heap residency in bytes
+
+
+Biography break-down
+^^^^^^^^^^^^^^^^^^^^
+
+A fixed-length event encoding a biography heap sample.
+
+ * ``EVENT_HEAP_PROF_SAMPLE``
+ * ``Word8``: Profile ID
+ * ``Word64``: Void
+ * ``Word64``: Lag
+ * ``Word64``: Use
+ * ``Word64``: Inherent use
+ * ``Word64``: Drag
More information about the ghc-commits
mailing list