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