On the lttng-tools side, during intense testing of UST application registration, some locking, fd and memory leaks were detected. After investigation, the problem was mainly the management of fds and poll data structure making dead locks, "unkillable" thread and major file descriptor leaks. At this point, I moved poll() to epoll() and found those problems during the "migration" process.

As of yesterday, lttng-tools had a compatibility layer between poll and epoll meaning that if epoll (default) is not present, the session daemon will fall back on the poll() ABI. Please see ltt-sessiond/compat/poll.h.

A part from that, multiple fixes and major code cleanup was made for easier maintainability purpose.

Also, I profiled the session daemon for performance results within different aspects of the complex sessiond architecture. Preliminary results shows a fairly small foot print on memory and CPU usage upon startup time and UST apps registration. The CPU time observe during 1000 UST registration at the same time was about around 0.06% of the entire system during that time. On those 0.06%, almost 80% was taken by the unregister function inside the session daemon and we know why it takes so much time. Improvement will come later on. The boot time was around 0.0003sec for normal user and ~0.5sec for root user (since this daemon has to load all kernel modules and mount debugfs). No fds are leaks at all and the memory foot print of the session daemon is around ~648k at an idle state. After the 1000 UST registration, the footprint remains. Finally, creating and destroying tracing session is respectively ~0.00000838sec and ~0.00000518sec.

Again, those are not final results but basic preliminary data intended to give an idea on performance.

Finally, lttng-tools pre12 was released. Note that from this point on, development will slow down on the lttng-tools side for me to complete my master degree.

Cheers! FIN

David

Projects: