babeltrace2-run(1)
NAME
babeltrace2-run
— Create a Babeltrace 2 trace processing graph and run it
SYNOPSIS
babeltrace2 [GENERAL OPTIONS
] run [--retry-duration
=TIME-US
]
[--allowed-mip-versions
=VERSION
]
--connect
=CONN-RULE
… COMPONENTS
DESCRIPTION
The run
command creates a Babeltrace 2 trace processing graph and
runs it.
See babeltrace2-intro(7) to learn more about the Babeltrace 2 project and its core concepts.
The run
command dynamically loads Babeltrace 2 plugins which
supply component classes. With the run
command, you specify which
component classes to instantiate as components and how to connect them.
The steps to write a babeltrace2 run
command line are:
-
Specify which component classes to instantiate as components with many
--component
options and how to configure them.This is the
COMPONENTS
part of the synopsis. See Create components to learn more. -
Specify how to connect components together with one or more
--connect
options.See Connect components to learn more.
NoteThe babeltrace2-convert(1) command is a specialization of the
run
command for the very common case of converting one or more traces:
it generates a run
command line and executes it. You can use its
--run-args
or
--run-args-0
option to make it print the
equivalent run
command line instead.
Create components
To create a component, use the --component
option. This option
specifies:
-
The name of the component, unique amongst all the component names of the trace processing graph.
-
The type of the component class to instantiate: source, filter, or sink.
-
The name of the plugin in which to find the component class to instantiate.
-
The name of the component class to instantiate.
Use the --component
option multiple times to create multiple
components. You can instantiate the same component class multiple times
as different components.
At any point in the command line, the --base-params
sets the current
base initialization parameters and the --reset-base-params
resets
them. When you specify a --component
option, its initial
initialization parameters are a copy of the current base initialization
parameters.
Immediately following a --component
option on the command line, the
created component is known as the current component (until the next
--component
option).
The --params
=PARAMS
option adds parameters to the initialization
parameters of the current component. If PARAMS
contains a key which
exists in the initialization parameters of the current component, then
this parameter is replaced.
Connect components
The components which you create from component classes with the
--component
option (see Create components) add
input and output ports depending on their type. An output port is from
where messages, like trace events, are sent. An input port is where
messages are received. For a given component, each port has a unique
name.
The purpose of the run
command is to create a trace processing graph,
that is, to know which component ports to connect together. The command
achieves this with the help of the connection rules that you provide
with one or more --connect
=CONN-RULE
options.
The format of CONN-RULE
is:
UP-COMP-PAT
[.UP-PORT-PAT
]:DOWN-COMP-PAT
[.DOWN-PORT-PAT
]
-
UP-COMP-PAT
-
Upstream component name pattern.
-
UP-PORT-PAT
-
Upstream (output) port name pattern.
-
DOWN-COMP-PAT
-
Downstream component name pattern.
-
DOWN-PORT-PAT
-
Downstream (input) port name pattern.
When a source or filter component adds a new output port within the
processing graph, the run
command does the following to find an
input port to connect it to:
For each connection rule (--connect options, in order):
If the component name of the output port matches UP-COMP-PAT and the
output port name matches UP-PORT-PAT:
For each component COMP in the trace processing graph:
If the name of COMP matches DOWN-COMP-PAT:
Select the first input port of COMP of which the name matches
DOWN-PORT-PAT, or fail with no match.
No possible connection: fail with no match.
UP-COMP-PAT
, UP-PORT-PAT
, DOWN-COMP-PAT
, and
DOWN-PORT-PAT
are globbing patterns where only the wildcard
character, *
, is special: it matches zero or more characters. You must
escape the *
, ?
, [
, .
, :
, and \
characters with \
.
When you don’t specify UP-PORT-PAT
or DOWN-PORT-PAT
, they’re
equivalent to *
.
You can leverage this connection mechanism to specify fallbacks with a
careful use of wildcards, as the order of the --connect
options on
the command line is significant. For example:
--connect='A.out*:B.in*' --connect=A:B --connect='*:C'
With those connection rules, the run
command connects:
-
Any output port of which the name starts with
out
of componentA
to the first input port of which the name starts within
of componentB
. -
Any other output port of component
A
to the first available input port of componentB
. -
Any other output port (of any component except
A
) to the first available input port of componentC
.
The run
command fails when it cannot find an input port to which to
connect a given output port using the provided connection rules.
See EXAMPLES for more examples.
OPTIONS
General
You can use those options before the command name.
See babeltrace2(1) for more details.
-
-d
-
--debug
-
Legacy option: this is equivalent to
--log-level
=TRACE
. -
-l
LVL
-
--log-level
=LVL
-
Set the log level of all known Babeltrace 2 loggers to
LVL
. -
--omit-home-plugin-path
-
Don’t search for plugins in
$HOME/.local/lib/babeltrace2/plugins
. -
--omit-system-plugin-path
-
Don’t search for plugins in
/usr/lib/babeltrace2/plugins
. -
--plugin-path
=PATH
[:PATH
]… -
Add
PATH
to the list of paths in which plugins can be found. -
-v
-
--verbose
-
Legacy option: this is equivalent to
--log-level
=INFO
.
Component creation
See Create components for more details.
-
-b
PARAMS
-
--base-params
=PARAMS
-
Set the current base parameters to
PARAMS
.You can reset the current base parameters with the
--reset-base-params
option.See the
--params
option for the format ofPARAMS
. -
-c
NAME
:COMP-CLS-TYPE
.PLUGIN-NAME
.COMP-CLS-NAME
-
--component
=NAME
:COMP-CLS-TYPE
.PLUGIN-NAME
.COMP-CLS-NAME
-
Create a component named
NAME
from the component class of typeCOMP-CLS-TYPE
namedCOMP-CLS-NAME
found in the plugin namedPLUGIN-NAME
, and set it as the current component.The available values for
TYPE
are:-
source
-
src
-
Source component class.
-
filter
-
flt
-
Filter component class.
-
sink
-
Sink component class.
The initial initialization parameters of this component are copied from the current base initialization parameters (see the
--base-params
option). -
-
-l
LVL
-
--log-level
=LVL
-
Set the log level of the current component to
LVL
.The available values for
LVL
are:-
NONE
-
N
-
Logging is disabled.
-
FATAL
-
F
-
Severe errors that lead the execution to abort immediately.
This level should be enabled in production.
-
ERROR
-
E
-
Errors that might still allow the execution to continue.
Usually, once one or more errors are reported at this level, the application, plugin, or library won’t perform any more useful task, but it should still exit cleanly.
This level should be enabled in production.
-
WARN
-
WARNING
-
W
-
Unexpected situations which still allow the execution to continue.
This level should be enabled in production.
-
INFO
-
I
-
Informational messages that highlight progress or important states of the application, plugins, or library.
This level can be enabled in production.
-
DEBUG
-
D
-
Debugging information, with a higher level of details than the
TRACE
level.This level should not be enabled in production.
-
TRACE
-
T
-
Low-level debugging context information.
This level should not be enabled in production.
-
-
-p
PARAMS
-
--params
=PARAMS
-
Add
PARAMS
to the initialization parameters of the current component.If
PARAMS
contains a key which exists in the initialization parameters of the current component, then replace the parameter.The format of
PARAMS
is a comma-separated list ofNAME
=VALUE
assignments:NAME
=VALUE
[,NAME
=VALUE
]…-
NAME
-
Parameter name (C identifier plus the
:
,.
, and-
characters). -
VALUE
-
One of:
-
null
,nul
,NULL
: null value. -
true
,TRUE
,yes
,YES
: true boolean value. -
false
,FALSE
,no
,NO
: false boolean value. -
Binary (
0b
prefix), octal (0
prefix), decimal, or hexadecimal (0x
prefix) unsigned (with+
prefix) or signed 64-bit integer. -
Double precision floating point number (scientific notation is accepted).
-
Unquoted string with no special characters, and not matching any of the null and boolean value symbols above.
-
Double-quoted string (accepts escape characters).
-
Array, formatted as an opening
[
, a comma-separated list ofVALUE
, and a closing]
. -
Map, formatted as an opening
{
, a comma-separated list ofNAME
=VALUE
assignments, and a closing}
.
You may put whitespaces around the individual
=
(assignment),,
(separator),[
(array beginning),]
(array end),{
(map beginning), and}
(map end) characters. -
Example:
--params='many=null, fresh=yes, condition=false, squirrel=-782329, play=+23, observe=3.14, simple=beef, needs-quotes="some string", escape.chars-are:allowed="a \" quote", things=[1, "hello", 2.71828], frog={slow=2, bath=[bike, 23], blind=NO}'
ImportantLike in the example above, make sure to single-quote the whole argument when you run this command from a shell, as it can contain many special characters.
-
-
-r
-
--reset-base-params
-
Reset the current base parameters.
You can set the current base parameters with the
--base-params
option.
Component connection
-
-x
CONN-RULE
-
--connect
=CONN-RULE
-
Add the connection rule
CONN-RULE
.The format of
CONN-RULE
is:UP-COMP-PAT
[.UP-PORT-PAT
]:DOWN-COMP-PAT
[.DOWN-PORT-PAT
]-
UP-COMP-PAT
-
Upstream component name pattern.
-
UP-PORT-PAT
-
Upstream (output) port name pattern.
-
DOWN-COMP-PAT
-
Downstream component name pattern.
-
DOWN-PORT-PAT
-
Downstream (input) port name pattern.
See Connect components to learn more.
-
Graph configuration
-
-m
VERSION
-
--allowed-mip-versions
=VERSION
-
Only allow the graph to honour version
VERSION
(0 or 1) of the Message Interchange Protocol (MIP) instead of allowing both versions. -
--retry-duration
=TIME-US
-
Set the duration of a single retry to
TIME-US
µs when a sink component reports "try again later" (busy network or file system, for example).Default: 100000 (100 ms).
Command information
EXAMPLES
ExampleCreate a single-port source component and a single-port sink component and connect them.
$ babeltrace2 run --component=A:src.plug.my-src \
--component=B:sink.plug.my-sink \
--connect=A:B
Possible resulting graph:
+-----------------+ +-------------------+
| src.plug.my-src | | sink.plug.my-sink |
| [A] | | [B] |
| | | |
| out @--->@ in |
+-----------------+ +-------------------+
ExampleUse the --params
option to set the initialization parameters of the current component.
In this example, the --params
option only applies to component
the-source
.
$ babeltrace2 run --component=the-source:src.my-plugin.my-src \
--params=offset=123,flag=true \
--component=the-sink:sink.my-plugin.my-sink \
--connect=the-source:the-sink
ExampleUse the --base-params
and --reset-base-params
options to set and reset the current base initialization parameters.
In this example, the effective initialization parameters of the created components are:
-
Component
A
-
offset=1203, flag=false
-
Component
B
-
offset=1203, flag=true, type=event
-
Component
C
-
ratio=0.25
$ babeltrace2 run --base-params=offset=1203,flag=false \
--component=A:src.plugin.compcls \
--component=B:flt.plugin.compcls \
--params=flag=true,type=event \
--reset-base-params \
--component=C:sink.plugin.compcls \
--params=ratio=0.25 \
--connect=A:B --connect=B:C
ExampleSpecify a component connection fallback rule.
In this example, any A
output port of which the name starts with
foo
is connected to a B
input port of which the name starts with
nin
. Any other A
output port is connected to a B
input port of
which the name starts with oth
.
The order of the --connect
options is important here: the opposite
order would create a system in which the first rule is always satisfied,
and any A
output port, whatever its name, would be connected to a
B
input port with a name that starts with oth
.
$ babeltrace2 run --component=A:src.plug.my-src \
--component=B:sink.plug.my-sink \
--connect='A.foo*:B:nin*' --connect='A:B.oth*'
Possible resulting graph:
+-----------------+ +-------------------+
| src.plug.my-src | | sink.plug.my-sink |
| [A] | | [B] |
| | | |
| foot @--->@ nine |
| foodies @--->@ ninja |
| some-port @--->@ othello |
| hello @--->@ other |
+-----------------+ +-------------------+
ENVIRONMENT VARIABLES
Babeltrace 2 library
-
BABELTRACE_EXEC_ON_ABORT
=CMDLINE
-
Execute the command line
CMDLINE
, as parsed like a UNIX 98 shell, when any part of the Babeltrace 2 project unexpectedly aborts.The application only aborts when the executed command returns, ignoring its exit status.
This environment variable is ignored when the application has the
setuid
or thesetgid
access right flag set. -
BABELTRACE_TERM_COLOR
=(AUTO
|NEVER
|ALWAYS
) -
Force the terminal color support for the babeltrace2(1) program and the project plugins.
The available values are:
-
AUTO
-
Only emit terminal color codes when the standard output and error streams are connected to a color-capable terminal.
-
NEVER
-
Never emit terminal color codes.
-
ALWAYS
-
Always emit terminal color codes.
-
-
BABELTRACE_TERM_COLOR_BRIGHT_MEANS_BOLD
=0
-
Set to
0
to emit SGR codes 90 to 97 for bright colors instead of bold (SGR code 1) and standard color codes (SGR codes 30 to 37). -
BABELTRACE_PLUGIN_PATH
=PATHS
-
Set the list of directories, in order, in which dynamic plugins can be found before other directories are considered to
PATHS
(colon-separated, or semicolon on Windows). -
LIBBABELTRACE2_DISABLE_PYTHON_PLUGINS
=1
-
Disable the loading of any Babeltrace 2 Python plugin.
-
LIBBABELTRACE2_INIT_LOG_LEVEL
=LVL
-
Force the initial log level of the Babeltrace 2 library to be
LVL
.If this environment variable is set, then it overrides the log level set by the
--log-level
option for the Babeltrace 2 library logger.The available values for
LVL
are:-
NONE
-
N
-
Logging is disabled.
-
FATAL
-
F
-
Severe errors that lead the execution to abort immediately.
This level should be enabled in production.
-
ERROR
-
E
-
Errors that might still allow the execution to continue.
Usually, once one or more errors are reported at this level, the application, plugin, or library won’t perform any more useful task, but it should still exit cleanly.
This level should be enabled in production.
-
WARN
-
WARNING
-
W
-
Unexpected situations which still allow the execution to continue.
This level should be enabled in production.
-
INFO
-
I
-
Informational messages that highlight progress or important states of the application, plugins, or library.
This level can be enabled in production.
-
DEBUG
-
D
-
Debugging information, with a higher level of details than the
TRACE
level.This level should not be enabled in production.
-
TRACE
-
T
-
Low-level debugging context information.
This level should not be enabled in production.
-
-
LIBBABELTRACE2_NO_DLCLOSE
=1
-
Make the Babeltrace 2 library leave any dynamically loaded modules (plugins and plugin providers) open at exit. This can be useful for debugging purposes.
-
LIBBABELTRACE2_PLUGIN_PROVIDER_DIR
=DIR
-
Set the directory from which the Babeltrace 2 library dynamically loads plugin provider shared objects to
DIR
.If this environment variable is set, then it overrides the default plugin provider directory.
Babeltrace 2 Python bindings
-
BABELTRACE_PYTHON_BT2_LOG_LEVEL
=LVL
-
Force the Babeltrace 2 Python bindings log level to be
LVL
.If this environment variable is set, then it overrides the log level set by the
--log-level
option for the Python bindings logger.The available values for
LVL
are:-
NONE
-
N
-
Logging is disabled.
-
FATAL
-
F
-
Severe errors that lead the execution to abort immediately.
This level should be enabled in production.
-
ERROR
-
E
-
Errors that might still allow the execution to continue.
Usually, once one or more errors are reported at this level, the application, plugin, or library won’t perform any more useful task, but it should still exit cleanly.
This level should be enabled in production.
-
WARN
-
WARNING
-
W
-
Unexpected situations which still allow the execution to continue.
This level should be enabled in production.
-
INFO
-
I
-
Informational messages that highlight progress or important states of the application, plugins, or library.
This level can be enabled in production.
-
DEBUG
-
D
-
Debugging information, with a higher level of details than the
TRACE
level.This level should not be enabled in production.
-
TRACE
-
T
-
Low-level debugging context information.
This level should not be enabled in production.
-
CLI
-
BABELTRACE_CLI_LOG_LEVEL
=LVL
-
Force the log level of the log level
babeltrace2
CLI to beLVL
.If this environment variable is set, then it overrides the log level set by the
--log-level
option for the CLI logger.The available values for
LVL
are:-
NONE
-
N
-
Logging is disabled.
-
FATAL
-
F
-
Severe errors that lead the execution to abort immediately.
This level should be enabled in production.
-
ERROR
-
E
-
Errors that might still allow the execution to continue.
Usually, once one or more errors are reported at this level, the application, plugin, or library won’t perform any more useful task, but it should still exit cleanly.
This level should be enabled in production.
-
WARN
-
WARNING
-
W
-
Unexpected situations which still allow the execution to continue.
This level should be enabled in production.
-
INFO
-
I
-
Informational messages that highlight progress or important states of the application, plugins, or library.
This level can be enabled in production.
-
DEBUG
-
D
-
Debugging information, with a higher level of details than the
TRACE
level.This level should not be enabled in production.
-
TRACE
-
T
-
Low-level debugging context information.
This level should not be enabled in production.
-
-
BABELTRACE_CLI_WARN_COMMAND_NAME_DIRECTORY_CLASH
=0
-
Disable the warning message which babeltrace2-convert(1) prints when you convert a trace with a relative path that’s also the name of a
babeltrace2
command. -
BABELTRACE_DEBUG
=1
-
Legacy variable: equivalent to setting the
--log-level
option toTRACE
. -
BABELTRACE_VERBOSE
=1
-
Legacy variable: equivalent to setting the
--log-level
option toINFO
.
FILES
-
$HOME/.local/lib/babeltrace2/plugins
-
User plugin directory.
-
/usr/lib/babeltrace2/plugins
-
System plugin directory.
-
/usr/lib/babeltrace2/plugin-providers
-
System plugin provider directory.
EXIT STATUS
0 on success, 1 otherwise.
SEE ALSO
babeltrace2-intro(7), babeltrace2(1), babeltrace2-convert(1)