From 876ecc058d0d7dd48f8c5f7ddaf189d278e69925 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?John=20H=C3=B6gberg?=
Date: Thu, 29 Jun 2017 19:32:41 +0200
Subject: Document rt_mask and add warnings about copy_save
---
lib/tools/doc/src/lcnt.xml | 98 ++++++++++++++++++++++++++++++++++++++++------
1 file changed, 87 insertions(+), 11 deletions(-)
(limited to 'lib/tools/doc/src/lcnt.xml')
diff --git a/lib/tools/doc/src/lcnt.xml b/lib/tools/doc/src/lcnt.xml
index 590049e681..922c2ac0f4 100644
--- a/lib/tools/doc/src/lcnt.xml
+++ b/lib/tools/doc/src/lcnt.xml
@@ -5,7 +5,7 @@
2009
- 2016
+ 2017
Ericsson AB, All Rights Reserved
@@ -314,24 +314,22 @@
apply(Fun) -> term()
Same as apply(Fun, []).
+
+ Fun = fun()
+
Same as apply(Fun, []).
apply(Fun, Args) -> term()
- Clears counters, applies function and collects the profiling results.
+ Same as apply(Module, Function, Args).
Fun = fun()
Args = [term()]
- Clears the lock counters and then setups the instrumentation to save all destroyed locks.
- After setup the fun is called, passing the elements in Args as arguments.
- When the fun returns the statistics are immediately collected to the server. After the
- collection the instrumentation is returned to its previous behavior.
- The result of the applied fun is returned.
-
+ Same as apply(Module, Function, Args).
@@ -349,6 +347,13 @@
collection the instrumentation is returned to its previous behavior.
The result of the applied function is returned.
+
+
+ This function should only be used for micro-benchmarks; it sets copy_save
+ to true for the duration of the call, which can quickly lead to running
+ out of memory.
+
+
@@ -421,6 +426,68 @@
Clear the internal counters. Same as lcnt:clear(Node).
+
+ rt_mask() -> [category_atom()]
+ Same as rt_mask(node()).
+ Same as rt_mask(node()).
+
+
+
+ rt_mask(Node) -> [category_atom()]
+ Returns the current lock category mask.
+
+ Node = node()
+
+
+
+ Refer to rt_mask/2 for a list of valid categories. All
+ categories are enabled by default.
+
+
+
+
+
+ rt_mask(Categories) -> ok | {error, copy_save_enabled}
+ Same as rt_mask(node(), Categories).
+
+ Categories = [atom()]
+
+ Same as rt_mask(node(), Categories).
+
+
+
+ rt_mask(Node, Categories) -> ok | {error, copy_save_enabled}
+ Changes the lock category mask.
+
+ Node = node()
+ Categories = [atom()]
+
+
+
+ Sets the lock category mask to the given categories.
+
+
+ This will fail if the copy_save option is enabled; see
+ lcnt:rt_opt/2.
+
+ Valid categories are:
+
+ - allocator
+ - db (ETS tables)
+ - debug
+ - distribution
+ - generic
+ - io
+ - process
+ - scheduler
+
+
+ This list is subject to change at any time, as is the category any given lock
+ may belong to.
+
+
+
+
rt_opt({Type, bool()}) -> bool()
Same as rt_opt(node(), {Type, Opt}).
@@ -434,16 +501,25 @@
Type = copy_save | process_locks
- Changes the lock counter behavior and returns the previous behaviour.
Option description:
{copy_save, bool()}
- - Enable statistics saving from destroyed locks by copying. This might consume a lot of memory.
+
- Retains the statistics of destroyed locks.
Default: false
+
+
+ This option will use a lot of memory when enabled, which must be
+ reclaimed with lcnt:rt_clear. Note that it makes no distinction
+ between locks that were destroyed and locks for which counting was
+ disabled, so enabling this option will disable changes to the lock
+ category mask.
+
+
{process_locks, bool()}
- - Profile process locks.
+
- Profile process locks, equal to adding process to the lock category mask;
+ see lcnt:rt_mask/2
Default: true
--
cgit v1.2.3