This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
gsoc:2022-gsoc-perf [2022/01/26 18:31] till created |
gsoc:2022-gsoc-perf [2022/04/05 20:41] (current) irogers |
||
---|---|---|---|
Line 2: | Line 2: | ||
Google Summer of Code Project ideas for perf, the Linux profiling subsystem. | Google Summer of Code Project ideas for perf, the Linux profiling subsystem. | ||
+ | |||
+ | [[gsoc:google-summer-code-2022|(Main Linux foundation GSoC 2022 page)]] | ||
===== What is perf? ===== | ===== What is perf? ===== | ||
Line 23: | Line 25: | ||
Wiki: [[https://perf.wiki.kernel.org/index.php/Main_Page|https://perf.wiki.kernel.org/]] | Wiki: [[https://perf.wiki.kernel.org/index.php/Main_Page|https://perf.wiki.kernel.org/]] | ||
- | Mentor contacts: [[https://sites.google.com/site/rogersemail/home|Ian Rogers]] <irogers+gsoc21 at google dot com>, Namhyung Kim <namhyung at kernel.org> | + | Mentor contacts: [[https://sites.google.com/site/rogersemail/home|Ian Rogers]] <irogers+gsoc22 at google dot com>, Namhyung Kim <namhyung at kernel.org> |
===== Project Proposals ===== | ===== Project Proposals ===== | ||
- | |||
- | **Still needs to get updated!!** | ||
==== Bring your open proposal ==== | ==== Bring your open proposal ==== | ||
- | If you have your own ideas for how tracing and profiling can be improved in the Linux kernel and perf tool then these are welcomed. | + | If you have your own ideas for how tracing and profiling can be improved in the Linux kernel and perf tool then these are welcomed. Some areas that have been brought up in the last year are [[https://lore.kernel.org/linux-perf-users/87o85ftc3p.fsf@smart-cactus.org/|better support for more programming languages]], [[https://lore.kernel.org/linux-perf-users/CAP-5=fW7La9ZNv8Z6LHRRNXne4+dWK6dR1ye2P=zETFELtK=fg@mail.gmail.com/|better packaging in Linux distributions]] and [[https://lore.kernel.org/all/20211129231830.1117781-1-namhyung@kernel.org/|new profiling commands like function latency measuring]]. |
==== User Interface ==== | ==== User Interface ==== | ||
+ | |||
+ | === Improved perf trace === | ||
+ | |||
+ | ''perf trace'' provides an strace like ability using perf APIs. By avoiding ptrace APIs, ''perf trace'' can even trace itself. The filename for an open system call is fairly boring encoded as a pointer. To get the actual filename the program is sending to the kernel requires information not captured in a perf event, and so libaudit is currently used. Libaudit adds code in the kernel on a number of system calls but not all - for example, there is no libaudit on the perf_event_open system call. A different technique for intercepting system calls and sending information to user land is BPF. This project will look to add a variant to ''perf trace'' where instead of getting filenames for system calls using libaudit, it will do so with BPF programs that perf can install in the kernel when the program starts up. The large number of system calls means this is a large challenge. | ||
=== Interactive perf report === | === Interactive perf report === | ||
Line 54: | Line 58: | ||
==== Scalability and speed ==== | ==== Scalability and speed ==== | ||
- | Large parts of the perf command are single threaded. As CPU core counts increase, this means that programming events can be slow and the command in general can be slower that it needs to be. This project will look to provide parallel approaches to processing perf data structures such as ''evlist'' so that more concurrency happens within the perf command. | + | Large parts of the perf command are single threaded. As CPU core counts increase, this means that programming events can be slow and the command in general can be slower that it needs to be. This project will look to provide parallel approaches to processing perf data structures such as ''evlist'' so that more concurrency happens within the perf command. This work will build upon that donee by Riccardo Mancini [[https://lore.kernel.org/linux-perf-users/3c4f8dd64d07373d876990ceb16e469b4029363f.camel@gmail.com/|in GSoC 2021]]. |