Project

General

Profile

Google Summer of Code 2013 » History » Version 78

Christian Babeux, 03/14/2013 10:49 PM

1 1 Christian Babeux
h1. Google Summer of Code 2013
2 3 Christian Babeux
3 50 Christian Babeux
Google Summer of Code is a global program that offers students stipends to write code for open source projects. 
4
5
This would be the first year of participation for the LTTng project.
6
7 52 Christian Babeux
h1. Guidelines for students applying to GSoC
8 51 Christian Babeux
9 53 Christian Babeux
Here a few guidelines and advices for aspiring applicants to GSoC:
10
11 77 Christian Babeux
* Submit your application to Google by *May 3 2013 19:00 UTC*.
12 55 Christian Babeux
13 68 Christian Babeux
* Join the IRC #lttng channel on OFTC (irc://irc.oftc.net/lttng) to discuss your application and project ideas.
14 69 Christian Babeux
  Since IRC and the "mailing list":http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev are our usual means of communications, applicants who have shown initiative in communicating with the community will be favoured in the applications review.
15 55 Christian Babeux
16 59 Christian Babeux
* Subscribe to the lttng-dev "mailing list":http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev.
17
18 72 Christian Babeux
* Impress us! Try submitting a patch for simple issues such as typos, documentation improvements, simple bug fixes (a good starting point would be to look at the LTTng bug tracker: "issues":http://bugs.lttng.org/projects/lttng/issues?sort=priority%2Cid%3Adesc). Or you could try the whole toolchain on some of your personal projects and come up with a problematic situation (performance issue, ease of debugging, etc.) that *your* project idea could potentially solve.
19 61 Christian Babeux
20 78 Christian Babeux
* Don''t panic! Some portion of the LTTng project can be quite complex and technically challenging, we don''t expect applicants to be familiar with all the concepts behind the LTTng codebase.
21 53 Christian Babeux
22 67 Christian Babeux
* Additional tips for a successful application: "The DOs and DON’Ts of Google Summer of Code: Student Edition":http://google-opensource.blogspot.de/2011/03/dos-and-donts-of-google-summer-of-code.html
23 66 Christian Babeux
24 14 Christian Babeux
h1. Project Ideas
25 2 Christian Babeux
26 65 Christian Babeux
The following ideas are only a starting point for applicants. Feel free to submit your own idea to the community!
27
28 13 Christian Babeux
h2. Babeltrace python bindings
29 3 Christian Babeux
30 4 Christian Babeux
*Brief explanation*:
31 2 Christian Babeux
32
Provide Python bindings to the Babeltrace APIs to provide a complete CTF reading/writting infrastructure to Python programmers.
33 1 Christian Babeux
34 41 Christian Babeux
Most of the public Babeltrace API is currently mapped using SWIG. However, a more “Pythonic” set of wrapper classes will make trace reading and writing 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.
35 4 Christian Babeux
36 41 Christian Babeux
*Expected results*: A set of "Pythonic" bindings, tests, code examples and documentation. 
37 4 Christian Babeux
38
*Complementary information*:
39
40
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.
41 6 Christian Babeux
42 73 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, the trace format outputted by the LTTng 2.0 tracers, and provides the CTF reference implementation.
43 4 Christian Babeux
44
*Skill level*: Easy - Medium
45 5 Christian Babeux
46 4 Christian Babeux
*Prerequisite Knowledge*: Python, OO development
47 5 Christian Babeux
48 34 Christian Babeux
*Mentors*: Jérémie Galarneau (jgalar)
49 7 Christian Babeux
50 13 Christian Babeux
h2. Trace probe support in C++
51 7 Christian Babeux
52
*Brief explanation*:
53
54 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. 
55
56 76 Christian Babeux
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 C++ compilers to enable compilation of the providers within the application. The necessary modifications should not be too complex but are an excellent introductory project.
57 7 Christian Babeux
58 43 Christian Babeux
*Expected results*: Probe can be compiled in a C++ application. Examples and documentation of the usage of probes in C++.
59 7 Christian Babeux
60
*Complementary information*:
61 9 Christian Babeux
62 8 Christian Babeux
Issue #338
63 7 Christian Babeux
64
*Skill level*: Easy - Medium
65
66
*Prerequisite Knowledge*: C++ development, C development, build environments
67
68 35 Christian Babeux
*Mentors*: Jérémie Galarneau (jgalar)
69 10 Christian Babeux
70 13 Christian Babeux
h2. Development of an strace-like wrapper
71 10 Christian Babeux
72
*Brief explanation*:
73
74 44 Christian Babeux
The LTTng kernel tracer should provide all the functionality required to emulate the behaviour of the strace utility. 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.
75 11 Christian Babeux
76 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.
77
78 44 Christian Babeux
*Expected results*: A wrapper/script or an additional command line switch to the lttng binary mimicking strace behavior. Tests and documentation of the new functionality.
79 10 Christian Babeux
80
*Complementary information*:
81
82
Issue #15
83
84
*Skill level*: Medium
85 11 Christian Babeux
86 10 Christian Babeux
*Prerequisite Knowledge*:  C development, scripting
87 11 Christian Babeux
88 36 Christian Babeux
*Mentors*: Julien Desfossez (jdesfossez), David Goulet (dgoulet)
89 15 Christian Babeux
90 17 Christian Babeux
h2. Improvement of liblttng-ust-libc-wrapper''s coverage of libc''s functions
91 18 Christian Babeux
92 15 Christian Babeux
*Brief explanation*:
93
94
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.
95
96
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.
97
98
As an extension to this project, one could also develop a tool to automatically generate static tracepoints for arbitrary libraries from the header files.
99
100 46 Christian Babeux
*Expected results*: A patchset implementing instrumentation in libc functions. Trace samples of program with their libc completely instrumented. Documentation and tests.
101 16 Christian Babeux
102 15 Christian Babeux
*Skill level*: Easy - Hard
103 16 Christian Babeux
104 15 Christian Babeux
*Prerequisite Knowledge*: C development, parser knowledge, scripting
105 16 Christian Babeux
106 37 Christian Babeux
*Mentors*: Christian Babeux (cbab)
107 19 Christian Babeux
108
h2. Dynamic instrumentation support in UST
109
110
*Brief explanation*:
111
112
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.
113
114
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.
115
116 47 Christian Babeux
*Expected results*: TBD (Depends on the proposed approach to dynamically instrument userspace applications)
117 19 Christian Babeux
118
*Skill level*: Hard
119
120
*Prerequisite Knowledge*: C++ development, C development, Assembly
121
122 38 Christian Babeux
*Mentors*: Christian Babeux (cbab), Yannick Brosseau (scientist)
123 20 Christian Babeux
124
h2. Android port
125
126
*Brief explanation*:
127
128 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.
129 20 Christian Babeux
130
This project presents a number of uncertain technical hurdles but some effort has already been made in most key areas.
131
132 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.
133
  - Glibc is now available on Android thanks to the efforts made by the cyborgstack project.
134 26 Christian Babeux
135 20 Christian Babeux
* System V IPC mechanisms are heavily relied-upon.
136 24 Christian Babeux
  - The Ericsson port makes use of temporary files.
137
  - Glibc on Android should provide such mechanisms.
138 26 Christian Babeux
139 24 Christian Babeux
* Userspace RCU must be ported and tested on the Android platform.
140
  - Ported by Ericsson, not mainlined.
141 20 Christian Babeux
142 48 Christian Babeux
*Expected results*: A working port of the kernel or userspace tracer running on an Android device.
143 20 Christian Babeux
144
*Complementary information*:
145
http://lists.lttng.org/pipermail/lttng-dev/2012-February/017626.html
146
147
*Skill level*: Hard
148
149
*Prerequisite Knowledge*: C development, kernel internals, Android development
150
151 39 Christian Babeux
*Mentors*: Christian Babeux (cbab), Jérémie Galarneau (jgalar), Yannick Brosseau (scientist)
152 22 Christian Babeux
153
h2. Instrumenting Open Source projects using UST
154
155
*Brief explanation*:
156
157 75 Christian Babeux
This project has a broad goal of instrumenting popular open source applications that have demanding performance constraints and that would benefit from 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.
158 23 Christian Babeux
159 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.
160
161 49 Christian Babeux
*Expected results*: A patchset instrumenting the proposed open source project.
162 22 Christian Babeux
163 49 Christian Babeux
*Skill level*: Easy - Hard
164 22 Christian Babeux
165
*Prerequisite Knowledge*: Project dependent
166
167 40 Christian Babeux
*Mentors*: Yannick Brosseau (scientist)