GeistHaus
log in · sign up

Flame Graphs

brendangregg.com

Homepage for Flame Graphs: a visualization for stack traces.

90 pages link to this URL
Profiling PHP in production at scale

At Wikipedia, we built an efficient sampling profiler for PHP, and use it to instrument live requests. The trace logs and flame graphs are powered by a simple setup that involves only free open-source software, and runs at low infrastructure cost. I'd like to demonstrate that profiling doesn't have

2 inbound links article en
clj-async-profiler

clj-async-profiler is an embedded high-precision performance profiler for Clojure. clj-async-profiler presents the profiling results as an interactive flamegraph. You can navigate the flamegraph, q...

2 inbound links article en
Flame Graphs

Flame Graphs # Flame Graphs are a visualization that effectively surfaces answers to questions like: Which methods are currently consuming CPU resources? How does consumption by one method compare to the others? Which series of calls on the stack led to executing a particular method? Flame Graph Flame Graphs are constructed by sampling stack traces a number of times. Each method call is presented by a bar, where the length of the bar is proportional to the number of times it is present in the samples.

1 inbound link article en docs
No Major Breakthroughs

Sadly, the time since the last post on this blog hasn't been fruitful with regards to the profiling project.

0 inbound links article en grantInstrumented Profiler
Plugins in Rust: Wrapping Up

The last finishing touches before our plugin system reaches production.

0 inbound links article en blog techprogrammingrustrustlangpluginbenchmarkingtestingdeploymentpostsopen-source
Max De Marzi

Graphs, Graphs, and nothing but the Graphs

0 inbound links website en ProblemsRelationalAIRageCypherTestingRandom
Rewriting the santa-lang Interpreter in Rust, Part 3 - Performance

Now that we have discussed building the core language and desired runtimes, it is time to highlight one of the biggest reasons why I decided to rewrite the interpreter in a lower-level systems language - performance! In this post, I will document how I went about benchmarking the two implementations (TypeScript/Node and Rust), greatly improving performance and highlighting interesting findings along the way.

0 inbound links article en posts RustSanta-LangInterpreterSanta-Lang-in-Rust-Series
Rewriting the santa-lang Interpreter in Rust, Part 2 - Runtimes

With the core language library now written, I could go about building the desired (delivery) runtimes. In this post within the series, I will delve into my experience integrating the core language library with these chosen runtimes, documenting some of the challenges that I faced along the way.

0 inbound links article en posts RustSanta-LangInterpreterSanta-Lang-in-Rust-Series
How do I boost difftastic by 4x

Difftastic is a structural diff that understands syntax. The diff results it generates are very fancy, but its performance is poor, and it consumes a lot of memory. Recently, I boosted it by 4x while using only 23% of memory (#393, #395, #401). This post explains how I accomplished this. Hope it can bring you some inspiration. When I started to write this post, not all optimizations were reviewed and merged.

0 inbound links article en posts rustoptimization
Visualizing SQL Plan Execution Time With FlameGraphs - Tanel Poder Blog

Update: I wrote a follow-up article about adding Loop Counters and Row Counts to SQL Plan FlameGraphs. I also show some old examples of “Bookshelf Graph” visualizations there. Check it out after reading this post first. Introduction Brendan Gregg invented and popularized a way to profile & visualize program response time by sampling stack traces and using his FlameGraph concept & tools. This technique is a great way for visualizing metrics in nested hierarchies, what stack-based program execution uses under the hood for invoking and tracking function calls. If you don’t know what FlameGraphs are, I suggest you read Brendan’s explanation first. - Linux, Oracle, SQL performance tuning and troubleshooting training & writing.

Frame pointers vs DWARF – my verdict

A couple of weeks ago I wrote a blog posting here about Fedora having frame pointers (LWN backgrounder, HN thread). I made some mistakes in that blog posting and retracted it, but I wasn’t wr…

1 inbound link article en Uncategorized dwarffedorafioframe pointersnbdkitperformanceperformance analysis
Profiling Elixir with Perf

In this post we will show you how to profile your Elixir application with perf and visualise its stack trace with Flamegraphs. We’ll create a basic Phoenix web server with two endpoints which we will call in order to profile and analyse its performance.

0 inbound links article en
Flame Graphs →

Infrequently published reports from the world of front-end development with a focus on accessibility, web performance, CSS and 11ty.

Guidelines on Benchmarking and Rust

Lots of libraries advertise how performant they are, and if performance is the main selling point then I expect several criteria to be met to ensure the integrity of the project is intact. While Rust examples are the focus, many of tips can be applied across any language.

0 inbound links article en
Analyzing PostgreSQL Performance Using Flame Graphs

A flame graph is a graphical representation that helps to quickly understand where a program spends most of its processing time. These graphs are based on sampled information collected by a profiler while the observed software is running. At regular intervals, the profiler captures and stores the current call stack. A flame graph is then generated from this data to provide a visual representation of the functions in which the software spends most of its processing time. This is useful for understanding the characteristics of a program and for improving its performance. This blog post explores the fundamentals of flame graphs and offers a few practical tips on utilizing them to identify and debug performance bottlenecks in PostgreSQL.

0 inbound links article en
Easy Performance Fixes Guided By Flame Graphs

When I was in grad school and struggling with my Master’s thesis, I started a small side project in order to distract myself and work on something that felt more rewarding. This project was basically a clone of vim – a terminal-based text editor I called badavi. That was around seven years ago. I haven’t worked on it continuously since then, but I would occasionally go back and hack on it in short little bursts. In particular I’ve been doing this the last couple of months, and I thought it might be interesting to write about some of the things I’ve been up to. For this post, we’ll look at some small performance fixes I made recently, guided by perf and flame graphs.

0 inbound links article en
Profiling Node.js in Production

<p>At work, I lead a team responsible for a Node.js service that serves a lot of GraphQL queries. We recently noticed some servers in the cluster were running much slower than others. We had used <a href="https://github.com/davidmarkclements/0x">0x</a> in the past to profile Node.js services locally. In this case, we could not identify the problem locally and needed a solution to profile Node.js in production to identify the cause of the slowdown.</p>

0 inbound links article en CC BY 4.0
I threw together my own profiler

While hacking at Subterranean (some not-a-game blocky cave game thing), I was experiencing weird groups of stutters happening about once per second that I was having trouble figuring out the cause of.

0 inbound links article en CC BY-SA 4.0
Lip Colour Finder – Profiling for Speedup

I’ve been working to improve the turnaround time for Lip Colour Finder results. In order to find the areas of my code most amenable to tweaking I turned to profiling.

0 inbound links article en Uncategorized
Why is my Rust build so slow?

I’ve recently come back to an older project of mine (that powers this website), and as I did some maintenance work: upgrade to newer crates, upgrade to a newer rustc, I noticed that my build was ta...

2 inbound links article en