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 _______________________________________________ ltt-dev mailing list [email protected] http://lists.casi.polymtl.ca/cgi-bin/mailman/listinfo/ltt-dev
