Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Understanding Ruby with BPF

Understanding Ruby with BPF

Avatar for Javier Honduvilla Coto

Javier Honduvilla Coto

January 01, 2021
Tweet

More Decks by Javier Honduvilla Coto

Other Decks in Technology

Transcript

  1. rbperf – tracing write(2) calls - $ rbperf record \

    --pid=124 event \ --tracepoint=syscalls:sys_enter_write - $ rbperf report [...]
  2. Architecture 2. Event (timer, syscall, etc) BPF code (bpf/rbperf.c) Read

    frame Driver (rbperf.py) 1. Adds info (pid to profile, thread address) 3. Receives stacktrace 4. Serialisation and persistence BPF tail-calls Bounded loop
  3. Challenges - Implementing the stack walking for a dynamic language

    - Supporting multiple Ruby versions - Correctness testing
  4. Challenges - Implementing the stack walking for a dynamic language

    - Supporting multiple Ruby versions - Correctness testing - BPF safety features
  5. Future plans - Integrate in Facebook’s profiling infra - Rewrite

    OSS driver program - Make the OSS version awesome - Better documentation (including how to measure overhead) - Add more output formats - Open source GDB / drgn helper - Other tools? - Containers support? - Support request-oriented workloads?