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