Google Summer of Code 2013 » History » Version 29
Christian Babeux, 03/13/2013 03:00 PM
1 | 1 | Christian Babeux | h1. Google Summer of Code 2013 |
---|---|---|---|
2 | 3 | Christian Babeux | |
3 | 14 | Christian Babeux | h1. Project Ideas |
4 | 2 | Christian Babeux | |
5 | 13 | Christian Babeux | h2. Babeltrace python bindings |
6 | 3 | Christian Babeux | |
7 | 4 | Christian Babeux | *Brief explanation*: |
8 | 2 | Christian Babeux | |
9 | Provide Python bindings to the Babeltrace APIs to provide a complete CTF reading/writting infrastructure to Python programmers. |
||
10 | 1 | Christian Babeux | |
11 | Most of the public Babeltrace API is currently mapped using SWIG. However, a more “Pythonic” set of wrapper classes will make trace reading and writting more accessible than using the current native API. The production and interpretation of CTF traces in a high level language such as Python will ease the development of custom trace analysis solutions. It will also provide a convenient language in which to implement trace conversion plugins. |
||
12 | 4 | Christian Babeux | |
13 | *Expected results*: TBD |
||
14 | |||
15 | *Complementary information*: |
||
16 | |||
17 | The Common Trace Format (CTF) specifies a trace format based on the requirements of the industry (through collaboration with the Multicore Association) and the Linux community. |
||
18 | 6 | Christian Babeux | |
19 | 4 | Christian Babeux | Babeltrace is a trace conversion library that aims to provide a convenient to read and convert trace files between different formats. It currently supports CTF, which is the trace format outputted by the LTTng 2.0 tracers and provides the CTF reference implementation. |
20 | |||
21 | *Skill level*: Easy - Medium |
||
22 | 5 | Christian Babeux | |
23 | 4 | Christian Babeux | *Prerequisite Knowledge*: Python, OO development |
24 | 5 | Christian Babeux | |
25 | 15 | Christian Babeux | *Mentors*: Jérémie Galarneau, TBD |
26 | 7 | Christian Babeux | |
27 | 13 | Christian Babeux | h2. Trace probe support in C++ |
28 | 7 | Christian Babeux | |
29 | *Brief explanation*: |
||
30 | |||
31 | 12 | Christian Babeux | The LTTng userspace tracing relies on the instrumentation of target applications with tracepoint probes. Currently, the only way to use tracepoints in C++ applications is by compiling a stand-alone C library linked to liblttng-ust which is then linked to the target C++ application. |
32 | |||
33 | While this method is functional, it introduces significant development time overhead and confusion for new users. This project aims at making the UST tracepoint probe code compatible with popular C++ compilers to enable direct compilation of the providers with the application. The necessary modifications should not be too complex but are an excellent introductory project. |
||
34 | 7 | Christian Babeux | |
35 | *Expected results*: TBD |
||
36 | |||
37 | *Complementary information*: |
||
38 | 9 | Christian Babeux | |
39 | 8 | Christian Babeux | Issue #338 |
40 | 7 | Christian Babeux | |
41 | *Skill level*: Easy - Medium |
||
42 | |||
43 | *Prerequisite Knowledge*: C++ development, C development, build environments |
||
44 | |||
45 | *Mentors*: TBD |
||
46 | 10 | Christian Babeux | |
47 | 13 | Christian Babeux | h2. Development of an strace-like wrapper |
48 | 10 | Christian Babeux | |
49 | *Brief explanation*: |
||
50 | |||
51 | The LTTng kernel tracer should provide all the functionality required to emulate the behaviour of the strace tracer. The goal of this project is the development of an strace drop-in replacement based on the LTTng tracing toolchain that shall provide the user with the functionality of strace and the performance characteristics of the LTTng kernel tracer. This should ensure backward compatibility with tools based on the strace output format. |
||
52 | 11 | Christian Babeux | |
53 | 10 | Christian Babeux | This should be implemented as a Babeltrace trace converter plug-in used in “live mode” -- an upcoming Babeltrace feature currently being developped by Julien Desfossez. The resulting plug-in will enable seamless interoperability between CTF and strace-based tools. |
54 | |||
55 | *Expected results*: TBD |
||
56 | |||
57 | *Complementary information*: |
||
58 | |||
59 | Issue #15 |
||
60 | |||
61 | *Skill level*: Medium |
||
62 | 11 | Christian Babeux | |
63 | 10 | Christian Babeux | *Prerequisite Knowledge*: C development, scripting |
64 | 11 | Christian Babeux | |
65 | 27 | Christian Babeux | *Mentors*: Julien Desfossez |
66 | 15 | Christian Babeux | |
67 | 17 | Christian Babeux | h2. Improvement of liblttng-ust-libc-wrapper''s coverage of libc''s functions |
68 | 18 | Christian Babeux | |
69 | 15 | Christian Babeux | *Brief explanation*: |
70 | |||
71 | liblttng-ust-libc-wrapper is a library that currently provides a wrapper around libc to instrument malloc() and free() with UST tracepoint probes. This project aims to provide a full coverage of the standard libc functions. |
||
72 | |||
73 | This library is typically “LD_PRELOAD”-ed when debugging an application to override malloc() and free() symbols. The underlying libc symbol is then looked-up and called. The resulting trace can then be analyzed to identify memory allocation issues. Gaining a better libc coverage will provide LTTng users with even better debugging capabilities. |
||
74 | |||
75 | As an extension to this project, one could also develop a tool to automatically generate static tracepoints for arbitrary libraries from the header files. |
||
76 | |||
77 | *Expected results*: TBD |
||
78 | 16 | Christian Babeux | |
79 | 15 | Christian Babeux | *Skill level*: Easy - Hard |
80 | 16 | Christian Babeux | |
81 | 15 | Christian Babeux | *Prerequisite Knowledge*: C development, parser knowledge, scripting |
82 | 16 | Christian Babeux | |
83 | 15 | Christian Babeux | *Mentors*: Christian Babeux, TBD |
84 | 19 | Christian Babeux | |
85 | h2. Dynamic instrumentation support in UST |
||
86 | |||
87 | *Brief explanation*: |
||
88 | |||
89 | The current UST tracer relies on static tracepoint probes manually inserted in the traced application’s source code. This project aims at providing dynamic instrumentation capabilities in arbitrary applications. |
||
90 | |||
91 | The Dyninst project already provides a great API to dynamically modify code which may come in handy in this project. This is a great opportunity to initiate a collaboration between both projects. |
||
92 | |||
93 | *Expected results*: TBD |
||
94 | |||
95 | *Skill level*: Hard |
||
96 | |||
97 | *Prerequisite Knowledge*: C++ development, C development, Assembly |
||
98 | |||
99 | *Mentors*: TBD |
||
100 | 20 | Christian Babeux | |
101 | h2. Android port |
||
102 | |||
103 | *Brief explanation*: |
||
104 | |||
105 | 28 | Christian Babeux | Port the LTTng infrastructure to the Android platform. The exact scope of this project will need to be reassessed based on the conclusions of the team currently working on this project as part of their undergrad project at École Polytechnique de Montréal. |
106 | 20 | Christian Babeux | |
107 | This project presents a number of uncertain technical hurdles but some effort has already been made in most key areas. |
||
108 | |||
109 | 25 | Christian Babeux | * The userspace part of the LTTng project relies on glibc features not present in Bionic -- Google''s libc implementation used on Android. |
110 | - Glibc is now available on Android thanks to the efforts made by the cyborgstack project. |
||
111 | 26 | Christian Babeux | |
112 | 20 | Christian Babeux | * System V IPC mechanisms are heavily relied-upon. |
113 | 24 | Christian Babeux | - The Ericsson port makes use of temporary files. |
114 | - Glibc on Android should provide such mechanisms. |
||
115 | 26 | Christian Babeux | |
116 | 24 | Christian Babeux | * Userspace RCU must be ported and tested on the Android platform. |
117 | - Ported by Ericsson, not mainlined. |
||
118 | 20 | Christian Babeux | |
119 | *Expected results*: TBD |
||
120 | |||
121 | *Complementary information*: |
||
122 | http://lists.lttng.org/pipermail/lttng-dev/2012-February/017626.html |
||
123 | |||
124 | *Skill level*: Hard |
||
125 | |||
126 | *Prerequisite Knowledge*: C development, kernel internals, Android development |
||
127 | |||
128 | *Mentors*: Christian Babeux, Jérémie Galarneau, TBD |
||
129 | 22 | Christian Babeux | |
130 | h2. Instrumenting Open Source projects using UST |
||
131 | |||
132 | *Brief explanation*: |
||
133 | |||
134 | 1 | Christian Babeux | This project has a broad goal of instrumenting popular open source applications that have demanding performance constraints and that would benefit by using LTTng''s tracing infrastructure. Wine is just one example of such a project. Perhaps other projects could benefit from LTTng and provide a great test-bed that will drive wider adoption of LTTng in open source projects. |
135 | 23 | Christian Babeux | |
136 | 22 | Christian Babeux | This project represents a great opportunity to instigate a collaboration between multiple open source projects. The intern will get the chance to experience the complete process of understanding an open source project''s codebase and contributing to its evolution. |
137 | |||
138 | *Expected results*: TBD |
||
139 | |||
140 | *Skill level*: Easy- Hard |
||
141 | |||
142 | *Prerequisite Knowledge*: Project dependent |
||
143 | |||
144 | 29 | Christian Babeux | *Mentors*: Yannick Brosseau |