Profiling Python with eBPF: A New Frontier in Performance Analysis

Profiling Python with eBPF: A New Frontier in Performance Analysis Profiling Python applications can be challenging, especially in scenarios involving high-performance requirements or complex workloads. Existing tools often require code instrumentation, making them impractical for certain use cases. Enter eBPF (Extended Berkeley Packet Filter)—a revolutionary Linux technology—and the open-source project Parca, which together are reshaping the landscape of Python profiling. In this post, I’ll explore how eBPF enables continuous profiling, discuss challenges like stack unwinding in Python, and demonstrate the power of modern profiling tools. ...

February 12, 2024 · 4 min · 846 words · Kemal Akkoyun

Profiling Python and Ruby using eBPF

https://www.polarsignals.com/blog/posts/2023/10/04/profiling-python-and-ruby-with-ebpf/

October 4, 2023 · 1 min · word
Ice and Fire

Ice and Fire: How to read icicle and flame graphs

I am too lazy now a days to re-post the blog post with all its assets and animations here. So until I get to it, I have put a link to it here. Enjoy :) https://www.polarsignals.com/blog/posts/2023/03/28/how-to-read-icicle-and-flame-graphs

March 28, 2023 · 1 min · 36 words

talk: Building a Go Profiler Using Go

Profiling has long been part of the Go developer’s toolbox to analyze the resource usage of a running process. But do you ever wonder how profilers built? In this talk, I will bring eBPF (a promising Kernel technology) and Go together to build a profiler for understanding Go code at runtime. Profiling has long been part of the developer’s toolbox to analyze the resource usage of a running process. Go users are very familiar with the concept thanks to state-of-art Go tooling. For years Google has consistently been able to cut down multiple percentage points in their fleet-wide resource usage every quarter, using techniques described in their “Google-Wide Profiling” paper, which is called continuous profiling. Through continuous profiling, the systematic collection of profiles, entirely new workflows suddenly become possible. ...

March 20, 2022 · 2 min · 306 words

Fantastic Symbols and Where to Find Them - Part 2

This is a blog post series. If you haven’t read Part 1 we recommend you to do so first! In the first blog post, we learned about the fantastic symbols (debug symbols), how the symbolization process works and lastly, how to find the symbolic names of addresses in a compiled binary. The actual location of the symbolic information depends on the programming language implementation the program is written in. We can categorize the programming language implementations into three groups: compiled languages (with or without a runtime), interpreted languages, and JIT-compiled languages. ...

January 27, 2022 · 7 min · 1296 words