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