BABELTRACE2-SOURCE() | BABELTRACE2-SOURCE() |
babeltrace2-source.ctf.fs - Babeltrace 2's file system CTF source component class
A Babeltrace 2 source.ctf.fs message iterator reads one or more CTF (see <https://diamon.org/ctf/>) 1.8 streams on the file system and emits corresponding messages.
CTF streams on the file system
|
| +---------------------+
| | src.ctf.fs |
| | |
'-->| ...5c847 | 0 | 0 @--> Stream 0 messages
| ...5c847 | 0 | 1 @--> Stream 1 messages
| ...5c847 | 0 | 2 @--> Stream 2 messages
+---------------------+
See babeltrace2-intro(7) to learn more about the Babeltrace 2 project and its core concepts.
A source.ctf.fs component opens a single logical CTF trace. A logical CTF trace contains one or more physical CTF traces. A physical CTF trace on the file system is a directory which contains:
If the logical CTF trace to handle contains more than one physical CTF trace, then all the physical CTF traces must have a trace UUID and all UUIDs must be the same. Opening more than one physical CTF trace to constitute a single logical CTF trace is needed to support LTTng’s tracing session rotation feature, for example (see lttng-rotate(1) starting from LTTng 2.11).
You specify which physical CTF traces to open and read with the inputs array parameter. Each entry in this array is the path to a physical CTF trace directory, that is, the directory directly containing the stream files.
A source.ctf.fs component does not recurse into directories to find CTF traces. However, the component class provides the babeltrace.support-info query object which indicates whether or not a given directory looks like a CTF trace directory (see “babeltrace.support-info”).
The component creates one output port for each logical CTF data stream. More than one physical CTF data stream file can support a single logical CTF data stream (LTTng’s trace file rotation and tracing session rotation can cause this).
If two or more data stream files contain the same packets, a source.ctf.fs message iterator reads each of them only once so that it never emits duplicated messages. This feature makes it possible, for example, to open overlapping LTTng snapshots (see <https://lttng.org/docs/#doc-taking-a-snapshot>) with a single source.ctf.fs component and silently discard the duplicated packets.
Many tracers produce CTF traces. A source.ctf.fs component makes some effort to support as many CTF traces as possible, even those with malformed streams.
Generally:
A source.ctf.fs component has special quirk handling for some LTTng (see <https://lttng.org/>) and barectf (see <https://lttng.org/>) traces, depending on the tracer’s version:
All LTTng versions
This is the equivalent of setting the force-clock-class-origin-unix-epoch parameter to true.
This is useful for the traces which lttng-crash(1) generates.
LTTng-UST up to, but excluding, 2.11.0, LTTng-modules up to, but excluding, 2.9.13, LTTng-modules from 2.10.0 to 2.10.9
barectf up to, but excluding, 2.3.1
clock-class-offset-ns=NS [optional signed integer]
You can combine this parameter with the clock-class-offset-s parameter.
clock-class-offset-s=SEC [optional signed integer]
You can combine this parameter with the clock-class-offset-ns parameter.
force-clock-class-origin-unix-epoch=yes [optional boolean]
inputs=DIRS [array of strings]
Each element of DIRS is the path to a physical CTF trace directory containing the trace’s stream files.
All the specified physical CTF traces must belong to the same logical CTF trace. See “Input” to learn more about logical and physical CTF traces.
trace-name=NAME [optional string]
+--------------------+ | src.ctf.fs | | | | ...5c847 | 0 | 1 @ | ... @ +--------------------+
A source.ctf.fs component creates one output port for each logical CTF data stream. See “Input” to learn more about logical and physical CTF data streams.
Each output port’s name has one of the following forms:
TRACE-ID | STREAM-CLASS-ID | STREAM-ID TRACE-ID | STREAM-ID
The component uses the second form when the stream class ID is not available.
TRACE-ID
STREAM-CLASS-ID
STREAM-ID
See babeltrace2-query-babeltrace.support-info(7) to learn more about this query object.
For a directory input which is the path to a CTF trace directory, the result object contains:
weight
group
You can leverage this query object’s group entry to assemble many physical CTF traces as a single logical CTF trace (see “Input” to learn more about logical and physical CTF traces). This is how the babeltrace2-convert(1) command makes it possible to specify as non-option arguments the paths to multiple physical CTF traces which belong to the same logical CTF trace and create a single source.ctf.fs component.
See babeltrace2-query-babeltrace.trace-infos(7) to learn more about this query object.
You can query the metadata-info object for a specific CTF trace to get its plain text metadata stream as well as whether or not it is packetized.
Parameters:
path=PATH [string]
Result object (map):
is-packetized [boolean]
text [string]
If you encounter any issue or usability problem, please report it on the Babeltrace bug tracker (see <https://bugs.lttng.org/projects/babeltrace>).
The Babeltrace project shares some communication channels with the LTTng project (see <https://lttng.org/>).
The Babeltrace 2 project is the result of hard work by many regular developers and occasional contributors.
The current project maintainer is Jérémie Galarneau <mailto:jeremie.galarneau@efficios.com>.
This component class is part of the Babeltrace 2 project.
Babeltrace is distributed under the MIT license (see <https://opensource.org/licenses/MIT>).
babeltrace2-intro(7), babeltrace2-plugin-ctf(7), lttng-crash(1)