linux plumbers conference tracing summit 2012
play

Linux Plumbers Conference Tracing Summit 2012 Interoperability - PowerPoint PPT Presentation

Linux Plumbers Conference Tracing Summit 2012 Interoperability Between Tracing Tools with the Common Trace Format (CTF) E-mail: mathieu.desnoyers@efficios.com Mathieu Desnoyers August 30th, 2012 1 > Presenter Mathieu Desnoyers


  1. Linux Plumbers Conference Tracing Summit 2012 Interoperability Between Tracing Tools with the Common Trace Format (CTF) E-mail: mathieu.desnoyers@efficios.com Mathieu Desnoyers August 30th, 2012 1

  2. > Presenter ● Mathieu Desnoyers ● EfficiOS Inc. ● http://www.efficios.com ● Author/Maintainer of ● LTTng, LTTng-UST, Babeltrace, Userspace RCU Mathieu Desnoyers August 30th, 2012 2

  3. > Content ● Common Trace Format introduction & goals ● Trace Stream Description Language ● Overview of trace layout ● Collaboration ● Reference implementations ● Other tools based on CTF ● Areas to improve ● Conclusion Mathieu Desnoyers August 30th, 2012 3

  4. > Common Trace Format ● Targets system-wide and multi-system trace representation in a common format, for integrated analysis: ● Software traces – Across multiple CPUs – Across the software stack (Hypervisor, kernel, library, applications) ● Hardware traces – DSPs, device-specific tracing components. – GPUs. Mathieu Desnoyers August 30th, 2012 4

  5. > Goals of the Common Trace Format (CTF) ● Portable, ● Compact, ● Configurable per-architecture to express layout required for speed, ● Transport independent: disk, network, serial port, memory, ● Usable on minimalistic DSPs as well as full- featured OS, ● Availability of flight recorder, Mathieu Desnoyers August 30th, 2012 5

  6. > Goals of the Common Trace Format (CTF) (continued) ● Buffers retrievable after crash, ● Support dynamically inserted instrumentation while tracing, ● Support per-cpu buffers, and many configurable streams. Mathieu Desnoyers August 30th, 2012 6

  7. > What is CTF ? ● Self-described binary trace format ● Domain-specific language (DSL) for description of stream layout: TSDL (Trace Stream Description Language) ● Trace embeds its own description Mathieu Desnoyers August 30th, 2012 7

  8. > TSDL Trace Description ● TSDL trace description entry: trace { major = 1; minor = 8; uuid = "a116db0a-ad45-40a0-9f66-b195d79432a0"; byte_order = le; packet_header := struct { uint32_t magic; uint8_t uuid[16]; uint32_t stream_id; }; }; Mathieu Desnoyers August 30th, 2012 8

  9. > TSDL Clock Description ● TSDL clock description entry: clock { name = monotonic; uuid = "1fece6ff-a288-4a59-b750-07bef0d296f0"; description = "Monotonic Clock"; freq = 1000000000; /* Frequency, in Hz */ /* clock value offset from Epoch is: offset * (1/freq) */ offset = 1338755739325858212; }; typealias integer { size = 64; align = 8; signed = false; map = clock.monotonic.value; } := uint64_clock_monotonic_t; Mathieu Desnoyers August 30th, 2012 9

  10. > TSDL Types ● TSDL type descriptions: typealias integer { size = 64; align = 8; signed = false; } := uint64_t; [...] typealias integer { size = 27; align = 1; signed = false; } := uint27_t; struct packet_context { uint64_clock_monotonic_t timestamp_begin; uint64_clock_monotonic_t timestamp_end; uint32_t events_discarded; uint32_t content_size; uint32_t packet_size; uint32_t cpu_id; }; struct event_header { uint64_t timestamp; uint32_t id; } align(8); Mathieu Desnoyers August 30th, 2012 10

  11. > TSDL Stream and Event ● TSDL stream and event descriptions: stream { id = 0; event.header := struct event_header; packet.context := struct packet_context; }; event { name = "ust_tests_hello:tptest"; id = 0; stream_id = 0; loglevel = 13; fields := struct { uint27_t _intfield; [...] }; }; Mathieu Desnoyers August 30th, 2012 11

  12. > CTF Diagram: Field Types Enumeration Variant Integer Float Array Sequence Structure String Depends on Mathieu Desnoyers August 30th, 2012 12

  13. > CTF Diagram: Event Structure Example Event Header id timestamp Context vpid procname Payload field0 field1 Mathieu Desnoyers August 30th, 2012 13

  14. > CTF Diagram: Trace Structure Stream 0 Stream 1 Metadata typealias ...; Packet 0 Packet 0 trace { ... }; header header clock { ...}; context context stream { ... }; event 0 event 0 event { ... }; event 1 event 1 ... ... ... Packet 1 Packet 1 header header context context event 0 event 0 event 1 event 1 ... ... ... ... Mathieu Desnoyers August 30th, 2012 14

  15. > CTF Diagram: Trace Structure Trace directory hierarchy: / metadata stream_0 stream_1 ... Mathieu Desnoyers August 30th, 2012 15

  16. > CTF Diagram: Trace Collection Trace collection directory hierarchy: / TraceA metadata stream_0 stream_1 Check if clock ... UUID match for trace TraceB metadata correlation. stream_0 stream_1 ... ... Mathieu Desnoyers August 30th, 2012 16

  17. > Advanced Usage: Variant Type struct event_header_compact { enum : uint5_t { compact = 0 ... 30, extended = 31 } id; variant <id> { struct { uint27_clock_monotonic_t timestamp; } compact; struct { uint32_t id; uint64_clock_monotonic_t timestamp; } extended; } v; } align(8); Mathieu Desnoyers August 30th, 2012 17

  18. > Advanced Usage: Variant Type (2) 3-bit padding: on this architecture, 5-bit: values 0-30 5-bit: value 31 selects 32-bit and 64-bit integers are aligned select “compact” variant. “extended” variant. on 8-bit. 0 ... 7 0 8 ... 15 8 16...23 16 24...31 32 0 ... 7 0 8 ... 15 8 16...23 16 24...31 32 id (32-bit) id timestamp (27-bit) 31 vpid (32-bit) timestamp (64-bit) vpid (32-bit) event fields... event fields... Mathieu Desnoyers August 30th, 2012 18

  19. > Environment Description env { hostname = "thinkos"; domain = "kernel"; sysname = "Linux"; kernel_release = "3.4-trunk-amd64"; kernel_version = "#1 SMP Tue Jun 26 17:23:03 UTC 2012"; tracer_name = "lttng-modules"; tracer_major = 2; tracer_minor = 0; tracer_patchlevel = 1; }; Mathieu Desnoyers August 30th, 2012 19

  20. > Collaboration ● Trace format specification ● Funded by – Linux Foundation CE Linux Forum and Ericsson ● In collaboration with Multi-Core Association Tool Infrastructure Workgroup – Freescale, Mentor Graphics, IBM, IMEC, National Instruments, Nokia Siemens Networks, Samsung, Texas Instruments, Tilera, Wind River, University of Houston, Polytechnique Montréal, University of Utah. ● Gathered feedback from Linux kernel developers and SystemTAP communities. Mathieu Desnoyers August 30th, 2012 20

  21. > Reference Implementations ● Babeltrace ● Reference implementation trace conversion tool and read/seek API for trace collections. ● Initially converts – From CTF to text – From dmesg text log to CTF ● LTTng kernel 2.0 and LTTng-UST 2.0 ● Native CTF producer reference implementation. ● Eclipse Tracing and Monitoring Framework Mathieu Desnoyers August 30th, 2012 21

  22. > Other tools based on CTF ● GDB (coming in Q4 2012) ● Javeltrace (CTF generator) ● Proprietary converters (derived from Babeltrace) ● LTTngTop ● LTTV ● LTTng Studio Mathieu Desnoyers August 30th, 2012 22

  23. > Areas to Improve ● Support for clocks with varying frequency, ● Mandate some of the currently “suggested” fields, ● Extend CTF to include state change description along with events, ● Extend CTF to include categorization of events, ● Should we keep CTF minimalistic (limited to description of binary layout and clocks), or include high-level semantic information ? Mathieu Desnoyers August 30th, 2012 23

  24. > Questions ? ● CTF specification available at: http://www.efficios.com/ctf ? ● http://www.efficios.com ● LTTng Information ● http://lttng.org ● lttng-dev@lists.lttng.org Mathieu Desnoyers August 30th, 2012 24

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend