[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