From 535aec73c5af7c7e2f48f29ad35d2319d91b9c90 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn-Egil=20Dahlberg?= Date: Wed, 27 Apr 2016 18:55:43 +0200 Subject: runtime_tools: User's guide to LTTng and dyntrace --- lib/runtime_tools/doc/src/LTTng.xml | 245 ++++++++++++++++++++++++++++++++++++ lib/runtime_tools/doc/src/Makefile | 2 +- lib/runtime_tools/doc/src/part.xml | 1 + 3 files changed, 247 insertions(+), 1 deletion(-) create mode 100644 lib/runtime_tools/doc/src/LTTng.xml (limited to 'lib') diff --git a/lib/runtime_tools/doc/src/LTTng.xml b/lib/runtime_tools/doc/src/LTTng.xml new file mode 100644 index 0000000000..eab1848e88 --- /dev/null +++ b/lib/runtime_tools/doc/src/LTTng.xml @@ -0,0 +1,245 @@ + + + +
+ + 20162016 + Ericsson AB. All Rights Reserved. + + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + + + LTTng and Erlang/OTP + + + + + + 2016-04-27 + + LTTng.xml +
+ +
+ Introduction +

The Linux Trace Toolkit: next generation is an open source system software package + for correlated tracing of the Linux kernel, user applications and libraries.

+

For more information, please visit http://lttng.org

+
+ +
+ Building Erlang/OTP with LTTng support +

+ Configure and build Erlang with LTTng support: +

+

For LTTng to work properly with Erlang/OTP you need + the following packages installed:

+ + +

LTTng-tools: a command line interface to control tracing sessions.

+

LTTng-UST: user space tracing library.

+
+ +

On Ubuntu this can be installed via aptitude:

+ + $ sudo aptitude install lttng-tools liblttng-ust-dev +

See Installing LTTng + for more information on how to install LTTng on your system.

+ +

After LTTng is properly installed on the system Erlang/OTP can be built with LTTng support.

+ + +$ ./configure --with-dynamic-trace=lttng +$ make +
+ +
+ Dyntrace Tracepoints +

All tracepoints are in the domain of com_ericsson_dyntrace

+

All Erlang types are the string equivalent in LTTng.

+ +

process_spawn

+ + pid : string :: Process ID. Ex. "<0.131.0>" + parent : string :: Process ID. Ex. "<0.131.0>" + entry : string :: Code Location. Ex. "lists:sort/1" + +

Example:

+

process_spawn: { cpu_id = 3 }, { pid = "<0.131.0>", parent = "<0.130.0>", entry = "erlang:apply/2" }

+ +

process_link

+ + to : string :: Process ID or Port ID. Ex. "<0.131.0>" + from : string :: Process ID or Port ID. Ex. "<0.131.0>" + type : string :: "link" | "unlink" + +

Example:

+

process_link: { cpu_id = 3 }, { from = "<0.130.0>", to = "<0.131.0>", type = "link" }

+ + +

process_exit

+ + pid : string :: Process ID. Ex. "<0.131.0>" + reason : string :: Exit reason. Ex. "normal" + +

Example:

+

process_exit: { cpu_id = 3 }, { pid = "<0.130.0>", reason = "normal" }

+ +

process_register

+ + pid : string :: Process ID. Ex. "<0.131.0>" + name : string :: Registered name. Ex. "error_logger" + type : string :: "register" | "unregister" + +

Example:

+

process_register: { cpu_id = 0 }, { pid = "<0.128.0>", name = "dyntrace_lttng_SUITE" type = "register" }

+ +

process_scheduled

+ + pid : string :: Process ID. Ex. "<0.131.0>" + entry : string :: Code Location. Ex. "lists:sort/1" + type : string :: "in" | "out" | "in_exiting" | "out_exiting" | "out_exited" + + +

Example:

+

process_scheduled: { cpu_id = 0 }, { pid = "<0.136.0>", entry = "erlang:apply/2", type = "in" }

+ + +

port_open

+ + pid : string :: Process ID. Ex. "<0.131.0>" + driver : string :: Driver name. Ex. "efile" + port : string :: Port ID. Ex. "#Port<0.1031>" + + +

Example:

+

port_open: { cpu_id = 5 }, { pid = "<0.131.0>", driver = "'/bin/sh -s unix:cmd'", port = "#Port<0.1887>" }

+ +

port_exit

+ + port : string :: Port ID. Ex. "#Port<0.1031>" + reason : string :: Exit reason. Ex. "normal" + +

Example:

+

port_exit: { cpu_id = 5 }, { port = "#Port<0.1887>", reason = "normal" }

+ +

port_link

+ + to : string :: Process ID. Ex. "<0.131.0>" + from : string :: Process ID. Ex. "<0.131.0>" + type : string :: "link" | "unlink" + +

Example:

+

port_link: { cpu_id = 5 }, { from = "#Port<0.1887>", to = "<0.131.0>", type = "unlink" }

+ +

port_scheduled

+ + port : string :: Port ID. Ex. "#Port<0.1031>" + entry : string :: Callback. Ex. "open" + type : string :: "in" | "out" | "in_exiting" | "out_exiting" | "out_exited" + + +

Example:

+

port_scheduled: { cpu_id = 5 }, { pid = "#Port<0.1905>", entry = "close", type = "out" }

+ +

function_call

+ + pid : string :: Process ID. Ex. "<0.131.0>" + entry : string :: Code Location. Ex. "lists:sort/1" + depth : integer :: Stack depth. Ex. 0 + +

Example:

+

function_call: { cpu_id = 5 }, { pid = "<0.145.0>", entry = "dyntrace_lttng_SUITE:'-t_call/1-fun-1-'/0", depth = 0 }

+ +

function_return

+ + pid : string :: Process ID. Ex. "<0.131.0>" + entry : string :: Code Location. Ex. "lists:sort/1" + depth : integer :: Stack depth. Ex. 0 + +

Example:

+

function_return: { cpu_id = 5 }, { pid = "<0.145.0>", entry = "dyntrace_lttng_SUITE:waiter/0", depth = 0 }

+ +

function_exception

+ + pid : string :: Process ID. Ex. "<0.131.0>" + entry : string :: Code Location. Ex. "lists:sort/1" + class : string :: Error reason. Ex. "error" + +

Example:

+

function_exception: { cpu_id = 5 }, { pid = "<0.144.0>", entry = "t:call_exc/1", class = "error" }

+ +

message_send

+ + from : string :: Process ID or Port ID. Ex. "<0.131.0>" + to : string :: Process ID or Port ID. Ex. "<0.131.0>" + message : string :: Message sent. Ex. "{<0.162.0>,ok}" + +

Example:

+

message_send: { cpu_id = 3 }, { from = "#Port<0.1938>", to = "<0.160.0>", message = "{#Port<0.1938>,eof}" }

+ +

message_receive

+ + to : string :: Process ID or Port ID. Ex. "<0.131.0>" + message : string :: Message received. Ex. "{<0.162.0>,ok}" + +

Example:

+

message_receive: { cpu_id = 7 }, { to = "<0.167.0>", message = "{<0.165.0>,ok}" }

+ +

gc_minor_start

+ + pid : string :: Process ID. Ex. "<0.131.0>" + need : integer :: Heap need. Ex. 2 + heap : integer :: Young heap word size. Ex. 233 + old_heap : integer :: Old heap word size. Ex. 233 + +

Example:

+

gc_minor_start: { cpu_id = 0 }, { pid = "<0.172.0>", need = 0, heap = 610, old_heap = 0 }

+ +

gc_minor_end

+ + pid : string :: Process ID. Ex. "<0.131.0>" + reclaimed : integer :: Heap reclaimed. Ex. 2 + heap : integer :: Young heap word size. Ex. 233 + old_heap : integer :: Old heap word size. Ex. 233 + +

Example:

+

gc_minor_end: { cpu_id = 0 }, { pid = "<0.172.0>", reclaimed = 120, heap = 1598, old_heap = 1598 }

+ +

gc_major_start

+ + pid : string :: Process ID. Ex. "<0.131.0>" + need : integer :: Heap need. Ex. 2 + heap : integer :: Young heap word size. Ex. 233 + old_heap : integer :: Old heap word size. Ex. 233 + +

Example:

+

gc_major_start: { cpu_id = 0 }, { pid = "<0.172.0>", need = 8, heap = 2586, old_heap = 1598 }

+ +

gc_major_end

+ + pid : string :: Process ID. Ex. "<0.131.0>" + reclaimed : integer :: Heap reclaimed. Ex. 2 + heap : integer :: Young heap word size. Ex. 233 + old_heap : integer :: Old heap word size. Ex. 233 + +

Example:

+

gc_major_end: { cpu_id = 0 }, { pid = "<0.172.0>", reclaimed = 240, heap = 4185, old_heap = 0 }

+ +
+ +
+ Examples +
+
diff --git a/lib/runtime_tools/doc/src/Makefile b/lib/runtime_tools/doc/src/Makefile index 0a590ff9ec..5ce40bb995 100644 --- a/lib/runtime_tools/doc/src/Makefile +++ b/lib/runtime_tools/doc/src/Makefile @@ -45,7 +45,7 @@ XML_REF3_FILES = dbg.xml dyntrace.xml erts_alloc_config.xml system_information.x XML_REF6_FILES = runtime_tools_app.xml XML_PART_FILES = part_notes.xml part_notes_history.xml part.xml -XML_CHAPTER_FILES = notes.xml notes_history.xml +XML_CHAPTER_FILES = notes.xml notes_history.xml LTTng.xml GENERATED_XML_FILES = DTRACE.xml SYSTEMTAP.xml diff --git a/lib/runtime_tools/doc/src/part.xml b/lib/runtime_tools/doc/src/part.xml index 14e8b71c83..34acf69fc8 100644 --- a/lib/runtime_tools/doc/src/part.xml +++ b/lib/runtime_tools/doc/src/part.xml @@ -34,6 +34,7 @@

Runtime Tools

+ -- cgit v1.2.3