[ltt-dev] LTTng-UST updates: stress-tests, API, header licenses

Mathieu Desnoyers mathieu.desnoyers at efficios.com
Fri Nov 18 16:44:55 EST 2011


Hi!

Some updates:

A) Stress-tests now pass:

As from now, all the stress-tests I had planned for lttng-ust work fine.
They involve running the "demo" program in parallel loops while tracing
its events, e.g.

on a SMP machine:

lttng create
lttng enable-channel chan -u
lttng enable-event ust_tests_demo:done -c chan -u --all
lttng enable-event ust_tests_demo:loop -c chan -u --all
lttng enable-event ust_tests_demo:starting -c chan -u --all
lttng start

# the 4 following loops execute in parallel
for a in $(seq 1 10); do ./demo; done &
for a in $(seq 1 10); do ./demo; done &
for a in $(seq 1 10); do ./demo; done &
for a in $(seq 1 10); do ./demo; done &

lttng destroy

ulimit -n 20000
babeltrace auto-20111118-163431 |grep ust_tests_demo:starting |wc -l
40

Which gives the expected number of events.

Also, the "fork" test now passes fine, with test:

lttng enable-channel chan -u
lttng enable-event ust_tests_fork:after_fork_parent -c chan -u --all
lttng enable-event ust_tests_fork:before_fork -c chan -u --all
lttng enable-event ust_tests_fork:after_fork_parent -c chan -u --all
lttng enable-event ust_tests_fork:after_fork_child -c chan -u --all
lttng enable-event ust_tests_fork:after_exec -c chan -u --all
lttng start

for a in $(seq 1 100); do ./run; done
for a in $(seq 1 100); do ./run; done
for a in $(seq 1 100); do ./run; done
for a in $(seq 1 100); do ./run; done
for a in $(seq 1 100); do ./run; done

lttng destroy

ulimit -n 20000
babeltrace auto-20111118-162320 | grep ust_tests_fork:after_fork_child | wc -l
500

which is the expected number of events.

B) Slight API change for TRACEPOINT_EVENT:

During reimplement (explained below), I did a small API change to
TRACEPOINT_EVENT:

from now on, instead of having separate TRACEPOINT_INCLUDE_PATH and
TRACEPOINT_INCLUDE_FILE macros, we simply have, e.g.:

#undef TRACEPOINT_INCLUDE_FILE
#define TRACEPOINT_INCLUDE_FILE ./ust_tests_demo.h

Also, the TRACEPOINT_INCLUDE_FILE macro becomes mandatory (no more
"default" path).

C) LTTng-UST headers are now MIT-licensed

To make sure the licensing of the lttng-ust public headers would not
cause any problems for proprietary applications (this was possibly
problematic for the tracepoint event headers), I relicensed those for
which I own the entire copyright to MIT-license, and reimplemented the
others. There is one public header that stays "GPLv2", on purpose, and
that's lttng/ust-ctl.h: it is only meant to be included by GPL
applications, mainly lttng-sessiond from lttng-tools. This is therefore
not an API that traced applications must use -- they are encouraged to
use the lttng-tools lttng.h API to control tracing through the sessiond
daemon anyway.

For an high-level view of the LTTng 2.0 architectures, the following
diagram can help:
http://lttng.org/sites/lttng.org/files/LTTng2_0Architecture_pa3.pdf

Best Regards,

Mathieu

-- 
Mathieu Desnoyers
Operating System Efficiency R&D Consultant
EfficiOS Inc.
http://www.efficios.com




More information about the lttng-dev mailing list