@@ -0,0 +1,74 @@
2+title = "Vere Profiling"
6+grant_type = [ "Apprenticeship" ]
7+grant_category = [ "Core Dev", "Runtime" ]
11+description = "Uncover and visualize performance bottlenecks in the runtime"
13+mentor = ["~fanfun-mocbud"]
14+assignee = ["~pontus-fadpun"]
17+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=A0180&prefill_Grant+Name=Vere%20Profiling"
20+# Vere Profiling Apprenticeship
22+Urbit currently has two profilers: a tracing profiler and a sampling profiler.
23+The tracing profiler writes a stack trace to `<pier>/.urb/put/trace`. To enable:
28+The sampling profiler uses `SIGPROF` to build up a set of data points detailing
29+the code paths that the runtime spends the most time executing. To enable:
31+$ cd <urbit_repo>/pkg/urbit
32+$ CPU_DEBUG=1 ./configure
34+$ build/urbit -P <pier>
37+This project will add additional profiling capabilites to Vere by using
38+well-known profiling tools like `dtrace`, `bpftrace`, and similar to develop
39+more nuanced insights into the performance bottlenecks in Vere. Upon
40+identification, the bottlenecks will be addressed where possible, leading to a
41+more performant runtime. Exploration of alternative profiling techniques like
42+causal profiling is encouraged.
46+- Integration of additional profiling tooling into Vere;
47+- list of performance bottlenecks;
48+- and patches addressing as many of the performance bottlenecks as possible.
53+- Experience with profiling tools like `dtrace` (macOS, FreeBSD), `bpftrace`
56+## Educational Outcomes for the Apprentice
60+- learn about the current state of profiling in Vere;
61+- integrate new tooling into Vere;
62+- and address any performance bottlenecks discovered.
64+## Responsibilities of the Mentor
68+- provide technical direction via recurring meetings and DM;
70+- and help the apprentice prepare the changes for release.
72+## Duration and Compensation
74+The expected duration is two months. Compensation is 1 star upon sucessful completion of the apprenticeship.