Update manual pages for 2.0.0-rc1
[babeltrace.git] / doc / man / babeltrace2-run.1.txt
CommitLineData
e70712b3 1= babeltrace2-run(1)
0659f3af 2:manpagetype: command
e70712b3 3:revdate: 14 September 2019
0659f3af
PP
4
5
e70712b3
PP
6== NAME
7
8babeltrace2-run - Create a Babeltrace 2 trace processing graph and run it
0659f3af
PP
9
10
e70712b3
PP
11[[synopsis]]
12== SYNOPSIS
13
0659f3af 14[verse]
e70712b3
PP
15*babeltrace2* [<<gen-opts,'GENERAL OPTIONS'>>] *run* [opt:--retry-duration='TIME-US']
16 opt:--connect='CONN-RULE'... 'COMPONENTS'
17
0659f3af 18
e70712b3 19== DESCRIPTION
0659f3af 20
e70712b3
PP
21The `run` command creates a Babeltrace~2 trace processing graph and
22runs it.
0659f3af 23
e70712b3 24include::common-see-babeltrace2-intro.txt[]
0659f3af 25
e70712b3 26The `run` command dynamically loads Babeltrace~2 plugins which
0659f3af 27supply component classes. With the `run` command, you specify which
e70712b3 28component classes to instantiate as components and how to connect them.
0659f3af 29
a8be4294 30The steps to write a `babeltrace2 run` command line are:
0659f3af 31
e70712b3
PP
32. Specify which component classes to instantiate as components with many
33 opt:--component options and how to configure them.
34+
35This is the 'COMPONENTS' part of the <<synopsis,synopsis>>. See
36<<create-comps,``Create components''>> to learn more.
0659f3af 37
e70712b3
PP
38. Specify how to connect components together with one or more
39 opt:--connect options.
40+
41See <<connect-comps,``Connect components''>> to learn more.
0659f3af 42
a8be4294 43NOTE: The man:babeltrace2-convert(1) command is a specialization of the
0659f3af
PP
44`run` command for the very common case of converting one or more traces:
45it generates a `run` command line and executes it. You can use its
a8be4294
MJ
46manopt:babeltrace2-convert(1):--run-args or
47manopt:babeltrace2-convert(1):--run-args-0 option to make it print the
0659f3af
PP
48equivalent `run` command line instead.
49
50
51[[create-comps]]
e70712b3
PP
52=== Create components
53
0659f3af
PP
54To create a component, use the opt:--component option. This option
55specifies:
56
e70712b3
PP
57* The name of the component, unique amongst all the component names of
58 the trace processing graph.
0659f3af
PP
59
60* The type of the component class to instantiate: source, filter, or
61 sink.
62
63* The name of the plugin in which to find the component class to
64 instantiate.
65
66* The name of the component class to instantiate.
67
e70712b3
PP
68Use the opt:--component option multiple times to create multiple
69components. You can instantiate the same component class multiple times
70as different components.
0659f3af
PP
71
72At any point in the command line, the opt:--base-params sets the current
73base initialization parameters and the opt:--reset-base-params resets
74them. When you specify a opt:--component option, its initial
75initialization parameters are a copy of the current base initialization
76parameters.
77
78Immediately following a opt:--component option on the command line, the
79created component is known as the _current component_ (until the next
80opt:--component option).
81
e70712b3
PP
82The opt:--params='PARAMS' option adds parameters to the current
83component's initialization parameters. If 'PARAMS' contains a key which
84exists in the current component's initialization parameters, this
85parameter is replaced.
0659f3af 86
0659f3af
PP
87
88[[connect-comps]]
e70712b3
PP
89=== Connect components
90
0659f3af 91The components which you create from component classes with the
e70712b3
PP
92opt:--component option (see <<create-comps,``Create components''>>) add
93input and output _ports_ depending on their type. An output port is from
94where messages, like trace events, are sent. An input port is where
95messages are received. For a given component, each port has a unique
96name.
0659f3af
PP
97
98The purpose of the `run` command is to create a trace processing graph,
99that is, to know which component ports to connect together. The command
100achieves this with the help of the connection rules that you provide
e70712b3 101with one or more opt:--connect='CONN-RULE' options.
0659f3af 102
e70712b3 103The format of 'CONN-RULE' is:
0659f3af
PP
104
105[verse]
106__UP-COMP-PAT__[.__UP-PORT-PAT__]:__DOWN-COMP-PAT__[.__DOWN-PORT-PAT__]
107
e70712b3 108'UP-COMP-PAT'::
0659f3af
PP
109 Upstream component name pattern.
110
111'UP-PORT-PAT'::
e70712b3 112 Upstream (output) port name pattern.
0659f3af 113
e70712b3 114'DOWN-COMP-PAT'::
0659f3af
PP
115 Downstream component name pattern.
116
117'DOWN-PORT-PAT'::
e70712b3 118 Downstream (input) port name pattern.
0659f3af
PP
119
120When a source or filter component adds a new output port within the
121processing graph, the `run` command does the following to find an
122input port to connect it to:
123
124----
e70712b3
PP
125For each connection rule (--connect options, in order):
126 If the output port's component's name matches UP-COMP-PAT and the
127 output port's name matches UP-PORT-PAT:
128 For each component COMP in the trace processing graph:
0659f3af 129 If the name of COMP matches DOWN-COMP-PAT:
e70712b3
PP
130 Select the first input port of COMP of which the name matches
131 DOWN-PORT-PAT, or fail with no match.
132
133No possible connection: fail with no match.
0659f3af
PP
134----
135
136__UP-COMP-PAT__, __UP-PORT-PAT__, __DOWN-COMP-PAT__, and
137__DOWN-PORT-PAT__ are globbing patterns where only the wildcard
138character, `*`, is special: it matches zero or more characters. You must
139escape the `*`, `?`, `[`, `.`, `:`, and :bs: characters with :bs:.
140
141When you do not specify __UP-PORT-PAT__ or __DOWN-PORT-PAT__, they are
142equivalent to `*`.
143
144You can leverage this connection mechanism to specify fallbacks with a
e70712b3
PP
145careful use of wildcards, as the order of the opt:--connect options on
146the command line is significant. For example:
0659f3af
PP
147
148----
149--connect='A.out*:B.in*' --connect=A:B --connect='*:C'
150----
151
e70712b3 152With those connection rules, the `run` command connects:
0659f3af
PP
153
154* Any output port of which the name starts with `out` of component `A`
e70712b3
PP
155 to the first input port of which the name starts with `in` of
156 component `B`.
0659f3af 157
e70712b3
PP
158* Any other output port of component `A` to the first available input
159 port of component `B`.
0659f3af 160
e70712b3
PP
161* Any other output port (of any component except `A`) to the first
162 available input port of component `C`.
0659f3af
PP
163
164The `run` command fails when it cannot find an input port to which to
e70712b3 165connect a given output port using the provided connection rules.
0659f3af 166
e70712b3 167See <<examples,``EXAMPLES''>> for more examples.
0659f3af
PP
168
169
e70712b3 170== OPTIONS
0659f3af 171
e70712b3 172include::common-gen-options.txt[]
0659f3af
PP
173
174
e70712b3 175=== Component creation
0659f3af 176
e70712b3 177See <<create-comps,``Create components''>> for more details.
0659f3af 178
e70712b3
PP
179opt:-b 'PARAMS'::
180opt:--base-params='PARAMS'::
181 Set the current base parameters to 'PARAMS'.
182+
183You can reset the current base parameters with the
184opt:--reset-base-params option.
185+
186See the opt:--params option for the format of 'PARAMS'.
0659f3af 187
e70712b3
PP
188opt:-c __NAME__:__COMP-CLS-TYPE__.'PLUGIN-NAME'.'COMP-CLS-NAME'::
189opt:--component=__NAME__:__COMP-CLS-TYPE__.'PLUGIN-NAME'.'COMP-CLS-NAME'::
190 Create a component named 'NAME' from the component class of type
191 'COMP-CLS-TYPE' named 'COMP-CLS-NAME' found in the plugin named
192 'PLUGIN-NAME', and set it as the current component.
0659f3af
PP
193+
194The available values for 'TYPE' are:
195+
196--
197`source`::
198`src`::
199 Source component class.
200
201`filter`::
202`flt`::
203 Filter component class.
204
205`sink`::
206 Sink component class.
207--
208+
209The initial initialization parameters of this component are copied from
210the current base initialization parameters (see the opt:--base-params
211option).
212
e70712b3
PP
213opt:-l 'LVL'::
214opt:--log-level='LVL'::
215 Set the log level of the current component to 'LVL'.
216+
217The available values for 'LVL' are:
218+
219--
220include::common-log-levels.txt[]
221--
0659f3af 222
e70712b3
PP
223opt:-p 'PARAMS'::
224opt:--params='PARAMS'::
0659f3af 225 Add 'PARAMS' to the initialization parameters of the current
e70712b3
PP
226 component.
227+
228If 'PARAMS' contains a key which exists in the current component's
229initialization parameters, replace the parameter.
230+
231--
232include::common-cmd-params-format.txt[]
233--
234
235opt:-r::
236opt:--reset-base-params::
237 Reset the current base parameters.
238+
239You can set the current base parameters with the opt:--base-params
240option.
241
0659f3af 242
e70712b3 243=== Component connection
0659f3af 244
e70712b3
PP
245opt:-x 'CONN-RULE'::
246opt:--connect='CONN-RULE'::
247 Add the connection rule 'CONN-RULE'.
248+
249The format of 'CONN-RULE' is:
250+
251[verse]
252__UP-COMP-PAT__[.__UP-PORT-PAT__]:__DOWN-COMP-PAT__[.__DOWN-PORT-PAT__]
253+
254--
255'UP-COMP-PAT'::
256 Upstream component name pattern.
257
258'UP-PORT-PAT'::
259 Upstream (output) port name pattern.
260
261'DOWN-COMP-PAT'::
262 Downstream component name pattern.
263
264'DOWN-PORT-PAT'::
265 Downstream (input) port name pattern.
266--
267+
268See <<connect-comps,``Connect components''>> to learn more.
0659f3af 269
0659f3af 270
e70712b3 271=== Graph configuration
0659f3af 272
e70712b3
PP
273opt:--retry-duration='TIME-US'::
274 Set the duration of a single retry to 'TIME-US'~µs when a sink
0659f3af
PP
275 component reports "try again later" (busy network or file system,
276 for example).
277+
e70712b3 278Default: 100000 (100~ms).
0659f3af
PP
279
280
0659f3af
PP
281include::common-cmd-info-options.txt[]
282
283
284[[examples]]
e70712b3
PP
285== EXAMPLES
286
0659f3af
PP
287.Create a single-port source component and a single-port sink component and connect them.
288====
289[role="term"]
290----
a8be4294 291$ babeltrace2 run --component=A:src.plug.my-src \
e70712b3
PP
292 --component=B:sink.plug.my-sink \
293 --connect=A:B
0659f3af
PP
294----
295
296Possible resulting graph:
297
298----
299+-----------------+ +-------------------+
300| src.plug.my-src | | sink.plug.my-sink |
301| [A] | | [B] |
302| | | |
303| out @--->@ in |
304+-----------------+ +-------------------+
305----
306====
307
0659f3af
PP
308.Use the opt:--params option to set the current component's initialization parameters.
309====
310In this example, the opt:--params option only applies to component
311`the-source`.
312
313[role="term"]
314----
a8be4294 315$ babeltrace2 run --component=the-source:src.my-plugin.my-src \
e70712b3
PP
316 --params=offset=123,flag=true \
317 --component=the-sink:sink.my-plugin.my-sink \
318 --connect=the-source:the-sink
0659f3af
PP
319----
320====
321
0659f3af
PP
322.Use the opt:--base-params and opt:--reset-base-params options to set and reset the current base initialization parameters.
323====
324In this example, the effective initialization parameters of the
325created components are:
326
e70712b3
PP
327Component `A`::
328 `offset=1203, flag=false`
329
330Component `B`::
331 `offset=1203, flag=true, type=event`
332
333Component `C`::
334 `ratio=0.25`
0659f3af
PP
335
336[role="term"]
337----
e70712b3
PP
338$ babeltrace2 run --base-params=offset=1203,flag=false \
339 --component=A:src.plugin.compcls \
340 --component=B:flt.plugin.compcls \
341 --params=flag=true,type=event \
342 --reset-base-params \
343 --component=C:sink.plugin.compcls \
344 --params=ratio=0.25 \
345 --connect=A:B --connect=B:C
0659f3af
PP
346----
347====
348
349.Specify a component connection fallback rule.
350====
351In this example, any `A` output port of which the name starts with
352`foo` is connected to a `B` input port of which the name starts with
353`nin`. Any other `A` output port is connected to a `B` input port of
354which the name starts with `oth`.
355
356The order of the opt:--connect options is important here: the opposite
357order would create a system in which the first rule is always satisfied,
358and _any_ `A` output port, whatever its name, would be connected to a
359`B` input port with a name that starts with `oth`.
360
361[role="term"]
362----
a8be4294 363$ babeltrace2 run --component=A:src.plug.my-src \
e70712b3
PP
364 --component=B:sink.plug.my-sink \
365 --connect='A.foo*:B:nin*' --connect='A:B.oth*'
0659f3af
PP
366----
367
368Possible resulting graph:
369
370----
371+-----------------+ +-------------------+
372| src.plug.my-src | | sink.plug.my-sink |
373| [A] | | [B] |
374| | | |
375| foot @--->@ nine |
376| foodies @--->@ ninja |
377| some-port @--->@ othello |
378| hello @--->@ other |
379+-----------------+ +-------------------+
380----
381====
382
383
384include::common-cli-env.txt[]
385
e70712b3 386
0659f3af
PP
387include::common-cli-files.txt[]
388
e70712b3 389
0659f3af
PP
390include::common-cmd-footer.txt[]
391
392
e70712b3
PP
393== SEE ALSO
394
395man:babeltrace2-intro(7),
a8be4294 396man:babeltrace2(1),
e70712b3 397man:babeltrace2-convert(1)
This page took 0.054559 seconds and 4 git commands to generate.