Felix Geisendörfer's Avatar

Felix Geisendörfer

@felixge.de.bsky.social

Working at Datadog on Go Profiling, Performance, OpenTelemetry and more. Before: - Manufacturing Observability at Apple - Co-founder at Transloadit - Node.js Core Dev

2,451 Followers  |  128 Following  |  107 Posts  |  Joined: 28.10.2024  |  2.1278

Latest posts by felixge.de on Bluesky

Post image

Why is your code allocating memory? How does the Go compiler see the world?

Join Go contributor @thepudds.bsky.social for a deep dive into escape analysis—the part of the compiler that decides whether your data stays on the stack or takes the more expensive trip to the heap.

🎟️ www.gophercon.com

05.08.2025 17:37 — 👍 6    🔁 4    💬 0    📌 1
Post image

🧭 CPU profiling isn’t telling you the whole story. Let’s fix that!

Join @felixge.de as he introduces a novel approach to analyzing Go request latency using critical path analysis—one that goes beyond traditional CPU profiling, logs, or traces.

🎟️ www.gophercon.com

#GopherConOrBust #golang

01.08.2025 17:39 — 👍 9    🔁 2    💬 0    📌 0
Post image

Just updated the proposal to use a struct based API that reuses the existing EventType structs in the trace package.

Feedback welcome! 🙇🏻‍♂️

01.08.2025 07:36 — 👍 0    🔁 0    💬 0    📌 0
Preview
proposal: x/exp/trace: support event constructor for testing · Issue #74826 · golang/go As discussed in #62627, this issue proposed to extend the API of x/exp/trace to support programmatically creating trace events for testing and analysis purposes. Overview The proposal is to add an ...

github.com/golang/go/is...

31.07.2025 08:53 — 👍 5    🔁 0    💬 1    📌 0
Post image

Wrote up a small proposal to make it easier to test code that is processing #golang execution traces using the x/exp/trace package.

31.07.2025 08:53 — 👍 7    🔁 0    💬 1    📌 0

IDK, probably when it’s old and boring. I don’t have time to stay on the bleeding edge of editor tech these days 😭.

30.07.2025 08:36 — 👍 2    🔁 0    💬 1    📌 0

Few things are more cursed than the way VS Code extensions determine which local development tools to use. This is especially true when using remote hosts via ssh.

30.07.2025 05:00 — 👍 1    🔁 0    💬 1    📌 0
Preview
Why continuous profiling is the fourth pillar of observability | Datadog Learn how modern continuous profilers have transformed profiling into a core observability practice.

Check out this new blog post outlining how profiling is becoming the fourth pillar of observability 🚀.

www.datadoghq.com/blog/continu...

28.07.2025 11:47 — 👍 12    🔁 6    💬 0    📌 0

German word of the day:

Verschlimmbessern = "Trying to make something better, but actually making it worse in the process"

A lot of engineering work falls into this category. Sometimes the answer is that there is value in leaving a problem unsolved.

21.07.2025 15:50 — 👍 44    🔁 6    💬 2    📌 1
Preview
cmd/pprof: macOS 12.6.1 profile overcounts system calls (again) · Issue #57722 · golang/go What version of Go are you using (go version)? $ go version go version go1.19.4 darwin/arm64 This is on macOS 12.6.1 with an M1 chip, but the problem seems to affect Intel as well. Does this issue ...

Is anybody here able to put me in touch with somebody at Apple who could help with fixing setitimer(2) on macOS or figure out another approach to CPU profiling for Go and other user space programs?

github.com/golang/go/is...

20.07.2025 17:55 — 👍 10    🔁 4    💬 0    📌 0

I'll check and get back to you! But we might not have the data anymore due to limited retention 😬

18.07.2025 14:52 — 👍 1    🔁 0    💬 1    📌 0
Preview
How Go 1.24's Swiss Tables saved us hundreds of gigabytes | Datadog Go 1.24's Swiss Tables cut our map memory usage by up to 70% in high-traffic workloads. Here's how we profiled the savings and improved performance.

And don't miss the equally amazing part 2:

www.datadoghq.com/blog/enginee...

18.07.2025 08:15 — 👍 19    🔁 2    💬 2    📌 0
Preview
How we tracked down a Go 1.24 memory regression across hundreds of pods | Datadog We rolled out Go 1.24 and saw a memory regression. Here's how we dug into system metrics, uncovered a bug in the runtime allocator, and worked with the Go team to help fix it.

Fantastic new blog post from my colleague Nayef.

If you're into Go internals, check it out!

www.datadoghq.com/blog/enginee...

18.07.2025 08:15 — 👍 47    🔁 11    💬 1    📌 1
Preview
Parsing Protobuf Like Never Before · mcyoung

new blogpost about protobuf perf (work related!)
mcyoung.xyz/2025/07/16/h...

16.07.2025 18:59 — 👍 43    🔁 8    💬 0    📌 1
Video thumbnail

uploading this classic clip for posterity buttondown.com/jaffray/arch...

12.07.2025 14:15 — 👍 8    🔁 2    💬 0    📌 0
Preview
Significant Bits | Read/Write/Nil with Michael Knyszek and Michael Pratt Please read important erratum at end of these notes!Astute listeners will notice that this is the first episode in over a year. I recorded not one but two awesome interviews...and then failed to ed...

Thanks @commaok.xyz for hosting @michael.express and I to talk about a fun bug in Go’s new Green Tea GC and the tools we used to investigate.

sigpod.dev/6

04.07.2025 05:14 — 👍 25    🔁 10    💬 1    📌 0
How to patch the Go toolchain

A few ways to build Go programs with a modified compiler/runtime/standard library: nsrip.com/posts/patchr... Overlays in particular are pretty cool IMO

02.07.2025 18:44 — 👍 15    🔁 5    💬 0    📌 0

It was nice meeting you. I really enjoyed your presentation, you’re a great speaker.

01.07.2025 19:49 — 👍 1    🔁 0    💬 0    📌 0
Preview
JSON evolution in Go: from v1 to v2 Reviewing the key changes in json/v2.

I'm working on an interactive Go 1.25 tour, but there are so many changes in json/v2 that I decided to cover them in a separate blog post.

Plenty of interactive examples ahead!

antonz.org/go-json-v2

22.06.2025 13:54 — 👍 29    🔁 16    💬 2    📌 0

I’m at #gopherconEU this week. Let’s chat if you’re here as well! #golang

17.06.2025 08:04 — 👍 6    🔁 2    💬 0    📌 0

I'm looking forward to your benchmarks. All your articles are incredibly interesting. Thanks for sharing them.

07.06.2025 08:24 — 👍 3    🔁 0    💬 0    📌 0

Having a really good generator for protobuf decoding would be amazing.

07.06.2025 08:23 — 👍 1    🔁 0    💬 1    📌 0
Preview
GitHub - richardartoul/molecule: Molecule is a Go library for parsing protobufs in an efficient and zero-allocation manner. Molecule is a Go library for parsing protobufs in an efficient and zero-allocation manner. - GitHub - richardartoul/molecule: Molecule is a Go library for parsing protobufs in an efficient and zer...

Agreed. I've used molecule and hand-rolled protobuf decoders in the past, and the results are a lot better than any protobuf generator I tried. But stuff like this creates friction in big companies where lots of people are updating protobuf definitions frequently :(.

github.com/richardartou...

07.06.2025 08:23 — 👍 1    🔁 0    💬 2    📌 0

I could imagine big differences depending on data distributions. Our payloads have lots of slices (strings and ints).

07.06.2025 07:21 — 👍 1    🔁 0    💬 1    📌 0

We got up to 60% less CPU in our testing. But we were also using the unsafe options, and one downside was increased memory usage for retaining the large incoming payloads throughout the lifecycle of the request.

07.06.2025 07:20 — 👍 1    🔁 0    💬 1    📌 0
Preview
runtime/pprof: unconditional gzip compression of profiles · Issue #74022 · golang/go The pprof format specifies that profiles must be gzip compressed on disk. Go implements this by unconditionally applying gzip (level 1) compression to all pprof profiles it produces. This is proble...

In related news: I filed an issue to improve profile compression options in the Go runtime: github.com/golang/go/is...

06.06.2025 07:23 — 👍 7    🔁 0    💬 1    📌 0
Post image

Meanwhile ChatGPT O3 figured it out in one shot.

06.06.2025 07:19 — 👍 4    🔁 0    💬 1    📌 0
Post image Post image Post image Post image

Dear @github.com I'd love to use Copilot to perform natural language search against large code bases. But it does not seem to work, no matter what model I pick.

06.06.2025 07:19 — 👍 6    🔁 0    💬 1    📌 0

Finally, register spill jujutsu edition 🥳 .

31.05.2025 07:27 — 👍 8    🔁 0    💬 0    📌 0

Thanks for writing this. It’s a good contribution to the discussions around iterator best practices 🙇

29.05.2025 08:39 — 👍 4    🔁 0    💬 0    📌 0

@felixge.de is following 20 prominent accounts