Erlang 21 - 1. LTTng and Erlang/OTP

1 LTTng और Erlang / OTP




erlang

1 LTTng और Erlang / OTP

१.१ परिचय

लिनक्स ट्रेस टूलकिट: अगली पीढ़ी लिनक्स कर्नेल, उपयोगकर्ता अनुप्रयोगों और पुस्तकालयों के सहसंबद्ध अनुरेखण के लिए एक खुला स्रोत प्रणाली सॉफ्टवेयर पैकेज है।

अधिक जानकारी के लिए, कृपया http://lttng.org जाएं

1.2 बिल्डिंग एल्टंग सपोर्ट के साथ एरलेंग / ओटीपी

LTTng समर्थन के साथ इरलांग को कॉन्फ़िगर और निर्माण करें:

LTTng के लिए Erlang / OTP के साथ ठीक से काम करने के लिए आपको निम्नलिखित पैकेजों की आवश्यकता है:

  • LTTng-tools: ट्रेसिंग सत्र को नियंत्रित करने के लिए एक कमांड लाइन इंटरफ़ेस।

  • LTTng-UST: उपयोगकर्ता अंतरिक्ष अनुरेखण पुस्तकालय।

उबंटू पर यह aptitude माध्यम से स्थापित किया जा सकता है:

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

अपने सिस्टम पर LTTng स्थापित करने के तरीके के बारे में अधिक जानकारी के लिए Installing LTTng देखें।

LTTng ठीक से सिस्टम पर स्थापित होने के बाद Erlang / OTP को LTTng समर्थन के साथ बनाया जा सकता है।

$ ./configure --with-dynamic-trace=lttng
$ make 

१.३ डायनेस्ट्रेस ट्रेसप्वाइंट

सभी org_erlang_dyntrace के डोमेन में हैं

सभी Erlang प्रकार LTTng में स्ट्रिंग समतुल्य हैं।

process_spawn

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • parent : string :: प्रक्रिया आईडी। पूर्व। "<0.131.0>"
  • entry : string :: कोड स्थान। पूर्व। "lists:sort/1"

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 मॉड्यूल के रूप में ट्रेस फ्लैग {tracer,dyntrace,[]} और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

process_link

  • to : string :: प्रोसेस आईडी या पोर्ट आईडी। पूर्व। "<0.131.0>"
  • from : string :: प्रक्रिया आईडी या पोर्ट आईडी। पूर्व। "<0.131.0>"
  • type : string :: "link" | "unlink" "link" | "unlink"

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 मॉड्यूल के रूप में ट्रेस फ्लैग {tracer,dyntrace,[]} और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

process_exit

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • reason : string :: कारण से बाहर निकलें। पूर्व। "normal"

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 मॉड्यूल के रूप में ट्रेस फ्लैग {tracer,dyntrace,[]} और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

process_register

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • name : string :: पंजीकृत नाम। पूर्व। "logger"
  • type : string :: "register" | "unregister" "register" | "unregister"

उदाहरण:

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

process_scheduled

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • entry : string :: कोड स्थान। पूर्व। "lists:sort/1"
  • type : string :: "in" | "out" | "in_exiting" | "out_exiting" | "out_exited" "in" | "out" | "in_exiting" | "out_exiting" | "out_exited"

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 {tracer,dyntrace,[]} फ्लैग के रूप में erlang:trace/3 ट्रेस फ्लैग running और {tracer,dyntrace,[]} साथ।

उदाहरण:

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

port_open

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 मॉड्यूल के रूप में ट्रेस फ्लैग ports और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

port_exit

  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • reason : string :: कारण से बाहर निकलें। पूर्व। "normal"

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 मॉड्यूल के रूप में ट्रेस फ्लैग ports और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

port_link

  • to : string :: Process ID पूर्व। "<0.131.0>"
  • from : string :: प्रक्रिया आईडी। पूर्व। "<0.131.0>"
  • type : string :: "link" | "unlink" "link" | "unlink"

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 मॉड्यूल के रूप में ट्रेस फ्लैग ports और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

port_scheduled

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 {tracer,dyntrace,[]} फ्लैग के रूप में erlang:trace/3 ट्रेस फ्लैग running और {tracer,dyntrace,[]} साथ।

  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • entry : string :: कॉलबैक। पूर्व। "open"
  • type : string :: "in" | "out" | "in_exiting" | "out_exiting" | "out_exited" "in" | "out" | "in_exiting" | "out_exiting" | "out_exited"

उदाहरण:

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

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 {tracer,dyntrace,[]} फ्लैग के रूप में erlang:trace/3 ट्रेस फ्लैग running और {tracer,dyntrace,[]} साथ।

function_call

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • entry : string :: कोड स्थान। पूर्व। "lists:sort/1"
  • depth : integer :: ढेर गहराई। पूर्व। 0

erlang:trace/3 माध्यम से उपलब्ध है erlang:trace/3 मॉड्यूल call ट्रेस फ्लैग call और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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 पूर्व। "<0.131.0>"
  • entry : string :: कोड स्थान। पूर्व। "lists:sort/1"
  • depth : integer :: ढेर गहराई। पूर्व। 0

erlang:trace/3 माध्यम से उपलब्ध है erlang:trace/3 मॉड्यूल call ट्रेस फ्लैग call या {tracer,dyntrace,[]} और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

function_exception

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • entry : string :: कोड स्थान। पूर्व। "lists:sort/1"
  • class : string :: त्रुटि का कारण। पूर्व। "error"

erlang:trace/3 माध्यम से उपलब्ध है erlang:trace/3 मॉड्यूल call ट्रेस फ्लैग call और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

message_send

  • from : string :: प्रक्रिया आईडी या पोर्ट आईडी। पूर्व। "<0.131.0>"
  • to : string :: प्रोसेस आईडी या पोर्ट आईडी। पूर्व। "<0.131.0>"
  • message : string :: संदेश भेजा गया। पूर्व। "{<0.162.0>,ok}"

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 मॉड्यूल send ट्रेस फ्लैग send और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

message_receive

  • to : string :: प्रोसेस आईडी या पोर्ट आईडी। पूर्व। "<0.131.0>"
  • message : string :: संदेश प्राप्त हुआ। पूर्व। "{<0.162.0>,ok}"

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 मॉड्यूल के रूप में ट्रेस फ्लैग 'receive' और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

gc_minor_start

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • need : integer :: ढेर की जरूरत है। पूर्व। 2
  • heap : integer :: युवा ढेर शब्द का आकार। पूर्व। 233
  • old_heap : integer :: पुराना हीप शब्द आकार। पूर्व। 233

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 मॉड्यूल के रूप में ट्रेस फ्लैग garbage_collection और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

gc_minor_end

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • reclaimed : integer :: ढेर पुनः प्राप्त। पूर्व। 2
  • heap : integer :: युवा ढेर शब्द का आकार। पूर्व। 233
  • old_heap : integer :: पुराना हीप शब्द आकार। पूर्व। 233

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 मॉड्यूल के रूप में ट्रेस फ्लैग garbage_collection और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

gc_major_start

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • need : integer :: ढेर की जरूरत है। पूर्व। 2
  • heap : integer :: युवा ढेर शब्द का आकार। पूर्व। 233
  • old_heap : integer :: पुराना हीप शब्द आकार। पूर्व। 233

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 मॉड्यूल के रूप में ट्रेस फ्लैग garbage_collection और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

gc_major_end

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • reclaimed : integer :: ढेर पुनः प्राप्त। पूर्व। 2
  • heap : integer :: युवा ढेर शब्द का आकार। पूर्व। 233
  • old_heap : integer :: पुराना हीप शब्द आकार। पूर्व। 233

erlang:trace/3 माध्यम से उपलब्ध erlang:trace/3 मॉड्यूल के रूप में ट्रेस फ्लैग garbage_collection और {tracer,dyntrace,[]} साथ erlang:trace/3

उदाहरण:

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

1.4 बीम ट्रैसप्वाइंट

सभी org_erlang_otp के डोमेन में हैं

सभी Erlang प्रकार LTTng में स्ट्रिंग समतुल्य हैं।

scheduler_poll

  • scheduler : integer :: अनुसूचक आईडी। पूर्व। 1
  • runnable : integer :: Runnable। पूर्व। 1

उदाहरण:

scheduler_poll: { cpu_id = 4 }, { scheduler = 1, runnable = 1 }

driver_init

  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"
  • major : integer :: प्रमुख संस्करण। पूर्व। 3
  • minor : integer :: लघु संस्करण। पूर्व। 1
  • flags : integer :: झंडे। पूर्व। 1

उदाहरण:

driver_init: { cpu_id = 2 }, { driver = "caller_drv", major = 3, minor = 3, flags = 1 }

driver_start

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"

उदाहरण:

driver_start: { cpu_id = 2 }, { pid = "<0.198.0>", driver = "caller_drv", port = "#Port<0.3676>" }

driver_output

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"
  • bytes : integer :: डेटा का आकार लौटा। पूर्व। 82

उदाहरण:

driver_output: { cpu_id = 2 }, { pid = "<0.198.0>", port = "#Port<0.3677>", driver = "/bin/sh -s unix:cmd", bytes = 36 }

driver_outputv

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"
  • bytes : integer :: डेटा का आकार लौटा। पूर्व। 82

उदाहरण:

driver_outputv: { cpu_id = 5 }, { pid = "<0.194.0>", port = "#Port<0.3663>", driver = "tcp_inet", bytes = 3 }

driver_ready_input

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"

उदाहरण:

driver_ready_input: { cpu_id = 5 }, { pid = "<0.189.0>", port = "#Port<0.3637>", driver = "inet_gethost 4 " }

driver_ready_output

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"

उदाहरण:

driver_ready_output: { cpu_id = 5 }, { pid = "<0.194.0>", port = "#Port<0.3663>", driver = "tcp_inet" }

driver_timeout

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"

उदाहरण:

driver_timeout: { cpu_id = 5 }, { pid = "<0.196.0>", port = "#Port<0.3664>", driver = "tcp_inet" }

driver_stop_select

  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"

उदाहरण:

driver_stop_select: { cpu_id = 5 }, { driver = "unknown" }

driver_flush

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"

उदाहरण:

driver_flush: { cpu_id = 7 }, { pid = "<0.204.0>", port = "#Port<0.3686>", driver = "tcp_inet" }

driver_stop

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"

उदाहरण:

driver_stop: { cpu_id = 5 }, { pid = "[]", port = "#Port<0.3673>", driver = "tcp_inet" }

driver_process_exit

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"

driver_ready_async

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"

उदाहरण:

driver_ready_async: { cpu_id = 3 }, { pid = "<0.181.0>", port = "#Port<0.3622>", driver = "tcp_inet" }

driver_call

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"
  • command : integer :: कमांड पूर्णांक। पूर्व। 1
  • bytes : integer :: डेटा का आकार लौटा। पूर्व। 82

उदाहरण:

driver_call: { cpu_id = 2 }, { pid = "<0.202.0>", port = "#Port<0.3676>", driver = "caller_drv", command = 0, bytes = 2 }

driver_control

  • pid : string :: Process ID पूर्व। "<0.131.0>"
  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • driver : string :: ड्राइवर का नाम। पूर्व। "tcp_inet"
  • command : integer :: कमांड पूर्णांक। पूर्व। 1
  • bytes : integer :: डेटा का आकार लौटा। पूर्व। 82

उदाहरण:

driver_control: { cpu_id = 3 }, { pid = "<0.32767.8191>", port = "#Port<0.0>", driver = "forker", command = 83, bytes = 32 }

aio_pool_get

  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • length : integer :: Async कतार लंबाई। पूर्व। 0

उदाहरण:

aio_pool_get: { cpu_id = 4 }, { port = "#Port<0.3614>", length = 0 }

aio_pool_put

  • port : string :: पोर्ट आईडी। पूर्व। "#Port<0.1031>"
  • length : integer :: Async कतार लंबाई। पूर्व। -1

put संचालन के लिए Async कतार लंबाई निर्धारित नहीं है।

उदाहरण:

aio_pool_put: { cpu_id = 3 }, { port = "#Port<0.3614>", length = -1 }

carrier_create

  • type : string :: कैरियर प्रकार। पूर्व। "ets_alloc"
  • instance : integer :: आवंटनकर्ता उदाहरण। पूर्व। 1
  • size : integer :: कैरियर का आकार। पूर्व। 262144
  • mbc_carriers : integer :: उदाहरण में mbc_carriers : integer वाहक की संख्या। पूर्व। 3
  • mbc_carriers_size : integer :: उदाहरण में mbc_carriers_size : integer कुल आकार वाहक होते हैं। पूर्व। 1343488
  • mbc_blocks : integer :: उदाहरण में mbc_blocks : integer ब्लॉकों की संख्या। पूर्व। 122
  • mbc_blocks_size : integer :: उदाहरण में सभी मल्टीब्लॉक ब्लॉकों का कुल आकार। पूर्व। 285296
  • sbc_carriers : integer :: उदाहरण में एकलब्लॉक वाहक की संख्या। पूर्व। 1
  • sbc_carriers_size : integer :: उदाहरण में सिंगलब्लॉक के कुल आकार वाहक होते हैं। पूर्व। 1343488
  • sbc_blocks : integer :: उदाहरण में सिंगलब्लॉक की संख्या। पूर्व। 1
  • sbc_blocks_size : integer :: उदाहरण में सभी सिंगलब्लॉक ब्लॉक का कुल आकार। पूर्व। 285296

उदाहरण:

carrier_create: { cpu_id = 2 }, { type = "ets_alloc", instance = 7, size = 2097152, mbc_carriers = 4, mbc_carriers_size = 3440640, mbc_blocks = 526, mbc_blocks_size = 1278576, sbc_carriers = 0, sbc_carriers_size = 0, sbc_blocks = 0, sbc_blocks_size = 0 }

carrier_destroy

  • type : string :: कैरियर प्रकार। पूर्व। "ets_alloc"
  • instance : integer :: आवंटनकर्ता उदाहरण। पूर्व। 1
  • size : integer :: कैरियर का आकार। पूर्व। 262144
  • mbc_carriers : integer :: उदाहरण में mbc_carriers : integer वाहक की संख्या। पूर्व। 3
  • mbc_carriers_size : integer :: उदाहरण में mbc_carriers_size : integer कुल आकार वाहक होते हैं। पूर्व। 1343488
  • mbc_blocks : integer :: उदाहरण में mbc_blocks : integer ब्लॉकों की संख्या। पूर्व। 122
  • mbc_blocks_size : integer :: उदाहरण में सभी मल्टीब्लॉक ब्लॉकों का कुल आकार। पूर्व। 285296
  • sbc_carriers : integer :: उदाहरण में एकलब्लॉक वाहक की संख्या। पूर्व। 1
  • sbc_carriers_size : integer :: उदाहरण में सिंगलब्लॉक के कुल आकार वाहक होते हैं। पूर्व। 1343488
  • sbc_blocks : integer :: उदाहरण में सिंगलब्लॉक की संख्या। पूर्व। 1
  • sbc_blocks_size : integer :: उदाहरण में सभी सिंगलब्लॉक ब्लॉक का कुल आकार। पूर्व। 285296

उदाहरण:

carrier_destroy: { cpu_id = 6 }, { type = "ets_alloc", instance = 7, size = 262144, mbc_carriers = 3, mbc_carriers_size = 3178496, mbc_blocks = 925, mbc_blocks_size = 2305336, sbc_carriers = 0, sbc_carriers_size = 0, sbc_blocks = 0, sbc_blocks_size = 0 }

carrier_pool_put

  • type : string :: कैरियर प्रकार। पूर्व। "ets_alloc"
  • instance : integer :: आवंटनकर्ता उदाहरण। पूर्व। 1
  • size : integer :: कैरियर का आकार। पूर्व। 262144

उदाहरण:

carrier_pool_put: { cpu_id = 3 }, { type = "ets_alloc", instance = 5, size = 1048576 }

carrier_pool_get

  • type : string :: कैरियर प्रकार। पूर्व। "ets_alloc"
  • instance : integer :: आवंटनकर्ता उदाहरण। पूर्व। 1
  • size : integer :: कैरियर का आकार। पूर्व। 262144

उदाहरण:

carrier_pool_get: { cpu_id = 7 }, { type = "ets_alloc", instance = 4, size = 3208 }

1.5 प्रक्रिया अनुरेखण का उदाहरण

os_mon और दोस्तों के प्रक्रिया अनुरेखण का एक उदाहरण।

एक बाश खोल में lttng की साफ शुरुआत।

$ lttng create erlang-demo
Spawning a session daemon
Session erlang-demo created.
Traces will be written in /home/egil/lttng-traces/erlang-demo-20160526-165920

सक्षम किए गए lttng के साथ एक Erlang नोड प्रारंभ करें।

$ erl
Erlang/OTP 19 [erts-8.0] [source-4d7b24d] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [lttng]

Eshell V8.0  (abort with ^G)
1>

dyntrace मॉड्यूल लोड करें।

1> l(dyntrace).
{module,dyntrace}

डायनेस्ट्रेस के माध्यम से सभी ट्रेस पॉइंट्स अब विज़िबल हैं और इसे lttng list -u माध्यम से सूचीबद्ध किया जा सकता है।

Erlang के लिए process_register LTTng ट्रेस पॉइंट सक्षम करें।

$ lttng enable-event -u org_erlang_dyntrace:process_register
UST event org_erlang_dyntrace:process_register created in channel channel0

नई प्रक्रियाओं के लिए प्रक्रिया अनुरेखण सक्षम करें और अनुरेखक बैकएंड के रूप में dyntrace उपयोग करें।

2> erlang:trace(new,true,[procs,{tracer,dyntrace,[]}]).
0

LTTng ट्रेसिंग प्रारंभ करें।

$ lttng start
Tracing started for session erlang-demo

Erlang में os_mon एप्लिकेशन प्रारंभ करें।

3> application:ensure_all_started(os_mon).
{ok,[sasl,os_mon]}

LTTng ट्रेसिंग को रोकें और परिणाम देखें।

$ lttng stop
Tracing stopped for session erlang-demo
$ lttng view
[17:20:42.561168759] (+?.?????????) elxd1168lx9 org_erlang_dyntrace:process_register: \
    { cpu_id = 5 }, { pid = "<0.66.0>", name = "sasl_sup", type = "register" }
[17:20:42.561215519] (+0.000046760) elxd1168lx9 org_erlang_dyntrace:process_register: \
    { cpu_id = 5 }, { pid = "<0.67.0>", name = "sasl_safe_sup", type = "register" }
[17:20:42.562149024] (+0.000933505) elxd1168lx9 org_erlang_dyntrace:process_register: \
    { cpu_id = 5 }, { pid = "<0.68.0>", name = "alarm_handler", type = "register" }
[17:20:42.571035803] (+0.008886779) elxd1168lx9 org_erlang_dyntrace:process_register: \
    { cpu_id = 5 }, { pid = "<0.69.0>", name = "release_handler", type = "register" }
[17:20:42.574939868] (+0.003904065) elxd1168lx9 org_erlang_dyntrace:process_register: \
    { cpu_id = 5 }, { pid = "<0.74.0>", name = "os_mon_sup", type = "register" }
[17:20:42.576818712] (+0.001878844) elxd1168lx9 org_erlang_dyntrace:process_register: \
    { cpu_id = 5 }, { pid = "<0.75.0>", name = "disksup", type = "register" }
[17:20:42.580032013] (+0.003213301) elxd1168lx9 org_erlang_dyntrace:process_register: \
    { cpu_id = 5 }, { pid = "<0.76.0>", name = "memsup", type = "register" }
[17:20:42.583046339] (+0.003014326) elxd1168lx9 org_erlang_dyntrace:process_register: \
    { cpu_id = 5 }, { pid = "<0.78.0>", name = "cpu_sup", type = "register" }
[17:20:42.586206242] (+0.003159903) elxd1168lx9 org_erlang_dyntrace:process_register: \
    { cpu_id = 5 }, { pid = "<0.82.0>", name = "timer_server", type = "register" }