| 1 | --- |
| 2 | id: lttng-consumerd |
| 3 | --- |
| 4 | |
| 5 | The _consumer daemon_, or `lttng-consumerd`, is a program sharing some |
| 6 | ring buffers with user applications or the LTTng kernel modules to |
| 7 | collect trace data and output it at some place (on disk or sent over |
| 8 | the network to an LTTng relay daemon). |
| 9 | |
| 10 | Consumer daemons are created by a session daemon as soon as events are |
| 11 | enabled within a tracing session, well before tracing is activated |
| 12 | for the latter. Entirely managed by session daemons, |
| 13 | consumer daemons survive session destruction to be reused later, |
| 14 | should a new tracing session be created. Consumer daemons are always |
| 15 | owned by the same user as their session daemon. When its owner session |
| 16 | daemon is killed, the consumer daemon also exits. This is because |
| 17 | the consumer daemon is always the child process of a session daemon. |
| 18 | Consumer daemons should never be started manually. For this reason, |
| 19 | they are not installed in one of the usual locations listed in the |
| 20 | `PATH` environment variable. `lttng-sessiond` has, however, a |
| 21 | <a href="/man/8/lttng-sessiond" class="ext">bunch of options</a> to |
| 22 | specify custom consumer daemon paths if, for some reason, a consumer |
| 23 | daemon other than the default installed one is needed. |
| 24 | |
| 25 | There are up to two running consumer daemons per user, whereas only one |
| 26 | session daemon may run per user. This is because each process has |
| 27 | independent bitness: if the target system runs a mixture of 32-bit and |
| 28 | 64-bit processes, it is more efficient to have separate corresponding |
| 29 | 32-bit and 64-bit consumer daemons. The `root` user is an exception: it |
| 30 | may have up to _three_ running consumer daemons: 32-bit and 64-bit |
| 31 | instances for its user space applications and one more reserved for |
| 32 | collecting kernel trace data. |
| 33 | |
| 34 | As new tracing domains are added to LTTng, the development community's |
| 35 | intent is to minimize the need for additionnal consumer daemon instances |
| 36 | dedicated to them. For instance, the Java Util Logging (JUL) domain |
| 37 | events are in fact mapped to the user space domain, thus tracing this |
| 38 | particular domain is handled by existing user space domain consumer |
| 39 | daemons. |