[ltt-dev] LTTng Agent

Bernd Hufmann Bernd.Hufmann at ericsson.com
Fri Apr 1 10:49:08 EDT 2011


we are currently integrating and enhancing the LTTng Trace Control 
plugin for Eclipse, that was originally provided as prototype by 
Polytechnique de Montreal.  Once all implementations are finished, the 
plugin will be made available at the Linuxtools project within the 
Eclipse foundation. This plugin connects as a client to a LTTng agent in 
order to control the tracing of kernel or user space applications using 
LTTng kernel or user space tracer. We have good progress but there are 
some features (commands) missing in the LTTng agent which I think are 
important for the user of the LTTng Trace Control. This email is to 
point out this missing features and to get some feedback about my 

My target node has the following versions installed:

- Ubuntu 10.10
- Instrumented kernel 2.6.35-24 installed from the PPA repository at 
- manually upgraded UST 0.12
- manually upgraded lttng-agent from the git repository 
(git.dorsal.polymtl.ca/git/lttng-agent.git), master branch of 23 March 2011

The LTTng agent provides commands to configure traces, markers or 
channels. In some of the cases it's possible for the user to get that 
information back form the agent (e.g. getActiveTraceInfo). However, 
there are also many parameters which can't be retrieved. Generally 
spoken, each parameter that can be set, there should be a command to get 
that information back. See below for a list of missing commands and 
other issues. I split the list between kernel and UST. The commands are 
explained from the command line client point of view.

    * Kernel
          o There isn't any command to get the state of the tracing,
            that means it's not possible to find out if an existing
            trace is started or paused. As well as it's not possible to
            retrieve the transport type (e.g. relay). It's possible to
            retrieve all active traces (command: getActiveTraces) and
            their configuration (getActiveTraceInfo), but the state and
            transport is not available.
            I propose to extend the command getActiveTraceInfo should be
            extended to return the current state (started or paused).

            Command: getActiveTraceInfo provider target trace
            Output: {"target":"<target>","trace":"<trace>","destination":"<trace
            path>","numThread":<# threads>,"flight_only":<flight
            recorder>,"normal_only":<normal mode>,
            "transport":<transport>, "is_started":<state>}
            <target>: the target name
            <trace>: trace name
            <trace path>: the trace path trace is local to the agent or
            network when streaming
            <# threads>: the number of threads
            <flight recorder>: true for flight recorder mode else false
            <normal mode>: true for normal mode else false
            <transport> : the transport used
            <is_started>: true if trace is started or false if trace is

          o There is a possibility to set parameters for channels, but
            there is no way to retrieve this information. Here are the
            set commands: setChannelEnable, setChannelOverride,
            setChannelSubbufNum, setChannelSubbufSize and
            setChannelTimer. There should be a command to retrieve that
            information. To be consistent to the other get-commands I
            propose the following command:

            Command: getChannelInfo provider target trace channel
            Output: {"target":"<target>","trace":"<trace>","channel":"<channel>", "timer":<timer>, "is_enabled":<enable
            state>,"is_override":<override state>,"subbuf_num":<#
            subbuf>,"subbuf_size":<subbuf size>}
            <target>: the target name
            <trace>: trace name
            <channel>: the channel name
            <timer>: channel timer in milliseconds
            <enable state>: true if enabled
            <override state>: true if override mode else false
            <# subbuf>: number of sub buffers
            <subbuf size>: size of sub buffer

    * UST
          o Currently it's not possible to create a UST trace using the
            LTTng Trace control and LTTng agent. This needs to be
            addressed and is currently looked at.

          o For UST, there isn't a command to get the created traces for
            a given target. Neither command getTraces nor
            getActiveTraces is implemented as it is for kernel traces. I
            understand that for UST there is always only 1 trace
            possible per target (with name auto), but the user has to
            have the possibility to retrieve the information from the
            agent whether the trace has been created or not. I propose
            to implement the commands getTraces and getActiveTraces.

          o As for kernel traces, there should be the possibility to
            retrieve the information about configured trace parameters.
            I propose to implement getActiveTraceInfo which returns the
            same information as for kernel traces (as proposed above)

          o As for kernel traces, there should be the possibility to
            retrieve the information about the configured channel
            parameters. For UST, only the channel timer can be
            configured and  only one single timer is supported per
            provider. I propose to use the getChannelInfo command as
            proposed above for kernel traces (to be consistent).

Could you please give me some feedback about the above requested 
enhancements of the LTTng agent? What are the future plans for the LTTng 
agent? Is it possible to include these enhancements?

Best Regards

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.casi.polymtl.ca/pipermail/lttng-dev/attachments/20110401/832acf7e/attachment-0003.htm>

More information about the lttng-dev mailing list