lttng-enable-channel(1): move --output description to maintain A-Z ordering
[lttng-tools.git] / doc / man / lttng-enable-channel.1.txt
CommitLineData
b4867b3b
PP
1lttng-enable-channel(1)
2=======================
3
4
5NAME
6----
7lttng-enable-channel - Create or enable LTTng channels
8
9
10SYNOPSIS
11--------
12Create a Linux kernel channel:
13
14[verse]
ce19b9ed 15*lttng* ['linkgenoptions:(GENERAL OPTIONS)'] *enable-channel* option:--kernel
240311ba 16 [option:--overwrite] [option:--output=(`mmap` | `splice`)]
b4867b3b
PP
17 [option:--subbuf-size='SIZE'] [option:--num-subbuf='COUNT']
18 [option:--switch-timer='PERIODUS'] [option:--read-timer='PERIODUS']
961df0d0 19 [option:--monitor-timer='PERIODUS']
b4867b3b
PP
20 [option:--tracefile-size='SIZE'] [option:--tracefile-count='COUNT']
21 [option:--session='SESSION'] 'CHANNEL'
22
23Create a user space channel:
24
25[verse]
ce19b9ed 26*lttng* ['linkgenoptions:(GENERAL OPTIONS)'] *enable-channel* option:--userspace
240311ba 27 [option:--overwrite] [option:--buffers-pid]
b4867b3b
PP
28 [option:--subbuf-size='SIZE'] [option:--num-subbuf='COUNT']
29 [option:--switch-timer='PERIODUS'] [option:--read-timer='PERIODUS']
961df0d0 30 [option:--monitor-timer='PERIODUS'] [option:--blocking-timeout='TIMEOUTUS']
b4867b3b
PP
31 [option:--tracefile-size='SIZE'] [option:--tracefile-count='COUNT']
32 [option:--session='SESSION'] 'CHANNEL'
33
34Enable existing channel(s):
35
36[verse]
ce19b9ed 37*lttng* ['linkgenoptions:(GENERAL OPTIONS)'] *enable-channel* (option:--userspace | option:--kernel)
b4867b3b
PP
38 [option:--session='SESSION'] 'CHANNEL'[,'CHANNEL']...
39
40
41DESCRIPTION
42-----------
43The `lttng enable-channel` command can create a new channel, or enable
44one or more existing and disabled ones.
45
46A channel is the owner of sub-buffers holding recorded events. Event,
7c1a4458 47rules, when created using man:lttng-enable-event(1), are always
b4867b3b
PP
48assigned to a channel. When creating a new channel, many parameters
49related to those sub-buffers can be fine-tuned. They are described in
50the subsections below.
51
52When 'CHANNEL' does not name an existing channel, a channel named
53'CHANNEL' is created. Otherwise, the disabled channel named 'CHANNEL'
54is enabled.
55
7c1a4458 56Note that the man:lttng-enable-event(1) command can automatically
b4867b3b
PP
57create default channels when no channel exist.
58
59A channel is always contained in a tracing session
7c1a4458 60(see man:lttng-create(1) for creating a tracing session). The
b4867b3b
PP
61session in which a channel is created using `lttng enable-channel` can
62be specified using the option:--session option. If the option:--session
63option is omitted, the current tracing session is targeted.
64
65Existing enabled channels can be disabled using
7c1a4458
PP
66man:lttng-disable-channel(1). Channels of a given session can be
67listed using man:lttng-list(1).
b4867b3b 68
1076f2b7
PP
69See the <<limitations,LIMITATIONS>> section below for a list of
70limitations of this command to consider.
b4867b3b
PP
71
72
73Event loss modes
74~~~~~~~~~~~~~~~~
75LTTng tracers are non-blocking: when no empty sub-buffer exists,
76losing events is acceptable when the alternative would be to cause
77substantial delays in the instrumented application's execution.
78
79LTTng privileges performance over integrity, aiming at perturbing the
80traced system as little as possible in order to make tracing of subtle
81race conditions and rare interrupt cascades possible.
82
83When it comes to losing events because no empty sub-buffer is available,
84the channel's event loss mode, specified by one of the option:--discard
85and option:--overwrite options, determines what to do amongst:
86
87Discard::
88 Drop the newest events until a sub-buffer is released.
89
90Overwrite::
91 Clear the sub-buffer containing the oldest recorded events and start
92 recording the newest events there. This mode is sometimes called
93 _flight recorder mode_ because it behaves like a flight recorder:
94 always keep a fixed amount of the latest data.
95
96Which mechanism to choose depends on the context: prioritize the newest
97or the oldest events in the ring buffer?
98
99Beware that, in overwrite mode (option:--overwrite option), a whole
100sub-buffer is abandoned as soon as a new event doesn't find an empty
101sub-buffer, whereas in discard mode (option:--discard option), only the
102event that doesn't fit is discarded.
103
104Also note that a count of lost events is incremented and saved in the
105trace itself when an event is lost in discard mode, whereas no
106information is kept when a sub-buffer gets overwritten before being
107committed.
108
109The probability of losing events, if it is experience in a given
110context, can be reduced by fine-tuning the sub-buffers count and size
111(see next subsection).
112
113
114Sub-buffers count and size
115~~~~~~~~~~~~~~~~~~~~~~~~~~
116The option:--num-subbuf and option:--subbuf-size options respectively
117set the number of sub-buffers and their individual size when creating
118a new channel.
119
120Note that there is a noticeable tracer's CPU overhead introduced when
121switching sub-buffers (marking a full one as consumable and switching
122to an empty one for the following events to be recorded). Knowing this,
123the following list presents a few practical situations along with how
124to configure sub-buffers for them when creating a channel in overwrite
125mode (option:--overwrite option):
126
127High event throughput::
128 In general, prefer bigger sub-buffers to lower the risk of losing
129 events. Having bigger sub-buffers also ensures a lower sub-buffer
130 switching frequency. The number of sub-buffers is only meaningful
131 if the channel is enabled in overwrite mode: in this case, if a
132 sub-buffer overwrite happens, the other sub-buffers
133 are left unaltered.
134
135Low event throughput::
136 In general, prefer smaller sub-buffers since the risk of losing
137 events is already low. Since events happen less frequently, the
138 sub-buffer switching frequency should remain low and thus the
139 tracer's overhead should not be a problem.
140
141Low memory system::
142 If the target system has a low memory limit, prefer fewer first,
143 then smaller sub-buffers. Even if the system is limited in memory,
144 it is recommended to keep the sub-buffers as big as possible to
145 avoid a high sub-buffer switching frequency.
146
147In discard mode (option:--discard option), the sub-buffers count
148parameter is pointless: using two sub-buffers and setting their size
149according to the requirements of the context is fine.
150
151
961df0d0
PP
152Switch timer
153~~~~~~~~~~~~
b4867b3b
PP
154When a channel's switch timer fires, a sub-buffer switch happens. This
155timer may be used to ensure that event data is consumed and committed
156to trace files periodically in case of a low event throughput.
157
158It's also convenient when big sub-buffers are used to cope with sporadic
159high event throughput, even if the throughput is normally lower.
160
961df0d0
PP
161Use the option:--switch-timer option to control the switch timer's
162period of the channel to create.
163
164
165Read timer
166~~~~~~~~~~
167By default, an internal notification mechanism is used to signal a full
168sub-buffer so that it can be consumed. When such notifications must be
169avoided, for example in real-time applications, the channel's read timer
170can be used instead. When the read timer fires, sub-buffers are checked
171for consumption when they are full.
172
173Use the option:--read-timer option to control the read timer's period of
174the channel to create.
175
176
177Monitor timer
178~~~~~~~~~~~~~
179When a channel's monitor timer fires, its registered trigger conditions
180are evaluated using the current values of its properties (for example,
181the current usage of its sub-buffers). When a trigger condition is true,
182LTTng executes its associated action. The only type of action currently
183supported is to notify one or more user applications.
184
185See the installed $$C/C++$$ headers in `lttng/action`,
186`lttng/condition`, `lttng/notification`, and `lttng/trigger` to learn
187more about application notifications and triggers.
188
189Use the option:--monitor-timer option to control the monitor timer's
190period of the channel to create.
b4867b3b
PP
191
192
193Buffering scheme
194~~~~~~~~~~~~~~~~
195In the user space tracing domain, two buffering schemes are available
196when creating a channel:
197
198Per-process buffering (option:--buffers-pid option)::
199 Keep one ring buffer per process.
200
201Per-user buffering (option:--buffers-uid option)::
202 Keep one ring buffer for all the processes of a single user.
203
204The per-process buffering scheme consumes more memory than the per-user
205option if more than one process is instrumented for LTTng-UST.
206However, per-process buffering ensures that one process having a high
207event throughput won't fill all the shared sub-buffers, only its own.
208
209The Linux kernel tracing domain only has one available buffering scheme
210which is to use a single ring buffer for the whole system
211(option:--buffers-global option).
212
213
214Trace files limit and size
215~~~~~~~~~~~~~~~~~~~~~~~~~~
216By default, trace files can grow as large as needed. The maximum size
217of each trace file written by a channel can be set on creation using the
218option:--tracefile-size option. When such a trace file's size reaches
219the channel's fixed maximum size, another trace file is created to hold
220the next recorded events. A file count is appended to each trace file
221name in this case.
222
223If the option:--tracefile-size option is used, the maximum number of
224created trace files is unlimited. To limit them, the
225option:--tracefile-count option can be used. This option is always used
226in conjunction with the option:--tracefile-size option.
227
228For example, consider this command:
229
d4f093aa 230[role="term"]
03c5529d
PP
231----
232$ lttng enable-channel --kernel --tracefile-size=4096 \
b4867b3b 233 --tracefile-count=32 my-channel
03c5529d 234----
b4867b3b
PP
235
236Here, for each stream, the maximum size of each trace file is
2374 kiB and there can be a maximum of 32 different files. When there is
238no space left in the last file, _trace file rotation_ happens: the first
239file is cleared and new sub-buffers containing events are written there.
240
241
242include::common-cmd-options-head.txt[]
243
244
245Domain
246~~~~~~
247One of:
248
249option:-k, option:--kernel::
250 Enable channel in the Linux kernel domain.
251
252option:-u, option:--userspace::
253 Enable channel in the user space domain.
254
255
256Target
257~~~~~~
59b19c3c 258option:-s 'SESSION', option:--session='SESSION'::
b4867b3b
PP
259 Create or enable channel in the tracing session named 'SESSION'
260 instead of the current tracing session.
261
262
263Event loss mode
264~~~~~~~~~~~~~~~
265One of:
266
267option:--discard::
268 Discard events when sub-buffers are full (default).
269
270option:--overwrite::
271 Flight recorder mode: always keep a fixed amount of the latest
272 data.
273
274
275Sub-buffers
276~~~~~~~~~~~
277option:--num-subbuf='COUNT'::
278 Use 'COUNT' sub-buffers. Rounded up to the next power of two.
279+
280Default values:
281+
c93eadad
PP
282* option:--userspace and option:--buffers-uid options:
283 {default_ust_uid_channel_subbuf_num}
284* option:--userspace and option:--buffers-pid options:
285 {default_ust_pid_channel_subbuf_num}
286* option:--kernel option: {default_kernel_channel_subbuf_num}
287* `metadata` channel: {default_metadata_subbuf_num}
b4867b3b 288
55d7bb02
PP
289option:--output='TYPE'::
290 Set channel's output type to 'TYPE'.
291+
292Available types: `mmap` (always available) and `splice` (only available
293with the option:--kernel option).
294+
295Default values:
296+
297* option:--userspace and option:--buffers-uid options: `mmap`
298* option:--userspace and option:--buffers-pid options: `mmap`
299* option:--kernel option: `splice`
300* `metadata` channel: `mmap`
301
b4867b3b
PP
302option:--subbuf-size='SIZE'::
303 Set the individual size of sub-buffers to 'SIZE' bytes.
304 The `k` (kiB), `M` (MiB), and `G` (GiB) suffixes are supported.
305 Rounded up to the next power of two.
306+
307The minimum sub-buffer size, for each tracer, is the maximum value
308between the default below and the system's page size. The following
309command shows the current system's page size: `getconf PAGE_SIZE`.
310+
311Default values:
312+
c93eadad
PP
313* option:--userspace and option:--buffers-uid options:
314 {default_ust_uid_channel_subbuf_size}
315* option:--userspace and option:--buffers-pid options:
316 {default_ust_pid_channel_subbuf_size}
317* option:--kernel option: {default_kernel_channel_subbuf_size}
318* `metadata` channel: {default_metadata_subbuf_size}
b4867b3b 319
b4867b3b
PP
320
321Buffering scheme
322~~~~~~~~~~~~~~~~
323One of:
324
325option:--buffers-global::
326 Use shared sub-buffers for the whole system (only available with the
327 option:--kernel option).
328
329option:--buffers-pid::
330 Use different sub-buffers for each traced process (only available
331 with the the option:--userspace option). This is the default
332 buffering scheme for user space channels.
333
334option:--buffers-uid::
335 Use shared sub-buffers for all the processes of the user running
336 the command (only available with the option:--userspace option).
337
338
339Trace files
340~~~~~~~~~~~
341option:--tracefile-count='COUNT'::
342 Limit the number of trace files created by this channel to
c93eadad
PP
343 'COUNT'. 0 means unlimited. Default:
344 {default_channel_tracefile_count}.
b4867b3b
PP
345+
346Use this option in conjunction with the option:--tracefile-size option.
347+
348The file count within a stream is appended to each created trace
349file. If 'COUNT' files are created and more events need to be recorded,
350the first trace file of the stream is cleared and used again.
351
352option:--tracefile-size='SIZE'::
353 Set the maximum size of each trace file written by
354 this channel within a stream to 'SIZE' bytes. 0 means unlimited.
c93eadad 355 Default: {default_channel_tracefile_size}.
b4867b3b
PP
356+
357Note: traces generated with this option may inaccurately report
358discarded events as of CTF 1.8.
359
360
361Timers
362~~~~~~
961df0d0
PP
363option:--monitor-timer::
364 Set the channel's monitor timer's period to 'PERIODUS' µs. 0 means a
365 disabled monitor timer.
366+
367Default values:
368+
369* option:--userspace and option:--buffers-uid options:
370 {default_ust_uid_channel_monitor_timer}
371* option:--userspace and option:--buffers-pid options:
372 {default_ust_pid_channel_monitor_timer}
373* option:--kernel option: {default_kernel_channel_monitor_timer}
374
b4867b3b
PP
375option:--read-timer::
376 Set the channel's read timer's period to 'PERIODUS' µs. 0 means a
377 disabled read timer.
378+
379Default values:
380+
c93eadad
PP
381* option:--userspace and option:--buffers-uid options:
382 {default_ust_uid_channel_read_timer}
383* option:--userspace and option:--buffers-pid options:
384 {default_ust_pid_channel_read_timer}
385* option:--kernel option: {default_kernel_channel_read_timer}
386* `metadata` channel: {default_metadata_read_timer}
b4867b3b
PP
387
388option:--switch-timer='PERIODUS'::
389 Set the channel's switch timer's period to 'PERIODUS' µs. 0 means
c93eadad
PP
390 a disabled switch timer.
391+
392Default values:
393+
394* option:--userspace and option:--buffers-uid options:
395 {default_ust_uid_channel_switch_timer}
396* option:--userspace and option:--buffers-pid options:
397 {default_ust_pid_channel_switch_timer}
398* option:--kernel option: {default_kernel_channel_switch_timer}
399* `metadata` channel: {default_metadata_switch_timer}
b4867b3b 400
491d1539
MD
401Timeouts
402~~~~~~~~
db0f7697
PP
403option:--blocking-timeout='TIMEOUTUS'::
404 Set the channel's blocking timeout value to 'TIMEOUTUS' µs
405 for applications executed with a set `LTTNG_UST_ALLOW_BLOCKING`
406 environment variable:
407+
408--
4090 (default)::
410 Do not block.
411
412-1::
413 Block forever until room is available in the sub-buffer to write the
414 event record.
415
416__n__, a positive value::
417 Wait for at most __n__ µs when trying to write into a sub-buffer.
418--
419
b4867b3b
PP
420
421include::common-cmd-help-options.txt[]
422
423
1076f2b7
PP
424[[limitations]]
425LIMITATIONS
426-----------
427As of this version of LTTng, it is not possible to perform the following
428actions with the `lttng enable-channel` command:
429
430* Reconfigure a channel once it is created.
431* Re-enable a disabled channel once its tracing session has been active
432 at least once.
433* Create a channel once its tracing session has been active
434 at least once.
435* Create a user space channel with a given buffering scheme
436 (option:--buffers-uid or option:--buffers-pid options) and create
437 a second user space channel with a different buffering scheme in the
438 same tracing session.
439
440
b4867b3b
PP
441include::common-cmd-footer.txt[]
442
443
444SEE ALSO
445--------
7c1a4458 446man:lttng-disable-channel(1),
491d1539
MD
447man:lttng(1),
448man:lttng-ust(3)
This page took 0.042139 seconds and 4 git commands to generate.