Felix Geisendörfer Profile Banner
Felix Geisendörfer Profile
Felix Geisendörfer

@felixge

13,553
Followers
1,975
Following
674
Media
15,326
Statuses

Senior Staff @datadoghq working on Go Profiling, Performance, OpenTelemetry and more. Before: @Apple , Co-founder @transloadit , @nodejs core dev

Berlin
Joined October 2007
Don't wanna be here? Send us removal request.
Pinned Tweet
@felixge
Felix Geisendörfer
11 months
🚀 Would you like to improve the latency of your Go apps? In the video below I'll walk you through 5 optimizations using @datadoghq 's new profiling timeline feature. Finding and fixing those problems would have been really hard with other tools ✨.
1
26
116
@felixge
Felix Geisendörfer
5 years
I herby start a new #blockchain consulting business: 1. You ask me if X will be revolutionized by blockchain technology. 2. I charge you $100k. 3. I say no. 4. You save millions of dollars. First customer gets 10% discount. Contact me now 🤙🏻
@DB_Blockchain
D_Blockchain
5 years
Can travel be revolutionized with blockchain technology? A blog post written by Matthias Felder and Moritz von Bonin published by our strategic partner @IBM @IBMBlockchain :
2
4
9
38
616
2K
@felixge
Felix Geisendörfer
3 years
Pro Tip: Are you tired of reviewing GitHub PR diff chunks out of context? Replace with in the URL to enjoy a much better reviewing experience. via @__jakub_g
13
184
742
@felixge
Felix Geisendörfer
2 years
What happens when you make an http request in #go ? res, _ := http.Get("") io.Copy(io.Discard, res.Body) Below is a sneak peak my new function call tracer for Go🕵🏻‍♂️. Note time spent on TLS / Cert Loading. Visualizer is Perfetto UI.
16
67
497
@felixge
Felix Geisendörfer
4 years
1) Are you using #postgres via #docker for mac? Have you ever noticed `EXPLAIN ANALYZE` slowing down your queries by like 60x? Let's dig into some #postgres and #linux internals to figure out what's going on!
Tweet media one
4
181
448
@felixge
Felix Geisendörfer
3 years
📢 New project: The Busy Developers's Guide to Go Profiling, Tracing and Observability. It's early days, but I'd love to get some feedback on my simplified models for understanding the Goroutine Scheduler and Garbage Collector. PTAL
Tweet media one
14
112
417
@felixge
Felix Geisendörfer
3 years
📢 Announcing: Stack Traces in Go In-depth research explaining Go's stack layout, various unwinding techniques (frame pointers, gopclntab, DWARF), etc. and how it all related to profiling. Please let me know what you think! : )
Tweet media one
5
59
276
@felixge
Felix Geisendörfer
2 years
🎉 Announcing fgtrace, a new profiler/tracer for #golang . It captures wallclock timeline views for each goroutine and it's really simple to use: defer fgtrace.Config{}.Start().Stop() Check it out & let me know what you think
Tweet media one
4
54
270
@felixge
Felix Geisendörfer
4 years
🚀🧵 I'm herby releasing a new #golang profiler called fgprof that allows you to analyze On-CPU as well as Off-CPU (e.g. I/O) time together. AFAIK, this is impossible with the builtin Go profilers 🙈. Please RT or comment on the thread : )
11
93
267
@felixge
Felix Geisendörfer
2 months
Nothing cures you of ideas like this than co-founding your own company, creating your own tech debt, and a few years later concluding that: no, it's not the right business move to clean it up. It's hard to express how humbling of an experience this was for me at the time.
@_jayphelps
Jay Phelps
2 months
If I was in charge at a big tech company I would have a team whose entire job was to refactor and clean up code. They'd add the original authors as reviewers, make custom lint rules, etc.
66
20
327
15
15
241
@felixge
Felix Geisendörfer
3 years
Turns out you can reduce the memory usage of a #golang by ~1.4MiB (on 64bit) by simply calling this at the beginning of your main: runtime.MemProfileRate = 0
Tweet media one
4
35
223
@felixge
Felix Geisendörfer
3 years
Join my #P99CONF presentation on Oct 6th to learn about: - Go Profiling - Go's unique runtime, calling convention - Using eBPF with Go - Why you should never use uretprobes with Go - Using Linux perf with Go - Go's builtin tracer - How I managed to fit all of this in 20min
Tweet media one
5
39
221
@felixge
Felix Geisendörfer
5 months
Profile-guided optimization for Go is great, and we have already used it to save significant amounts of money at Datadog. However, as part of a wider rollout, we noticed that one service saw an 18% increase in memory usage from pgo until we performed a rollback.
Tweet media one
4
35
215
@felixge
Felix Geisendörfer
1 year
Austin Clements from the Go team just landed a series of 17 patches. If everything goes well, you'll never notice that anything changed. That being said, watching this come together has been mind blowing. This is serious engineering (TM). 🧵 Thread ...
Tweet media one
3
24
201
@felixge
Felix Geisendörfer
3 years
I'm very excited to announce my latest project in the #go #profiling space. sprof is a static profiler that can profile your applications without running them using only static analysis. It's a true revolution in #profiling - you should check it out!
Tweet media one
5
33
183
@felixge
Felix Geisendörfer
4 years
Announcing my new #PostgreSQL tool: sqlbench 🎉🚀. sqlbench measures and compares the execution time of one or more SQL queries. Please RT & comment to let me know what you think!
4
52
178
@felixge
Felix Geisendörfer
1 year
How Often Does Go Preempt Goroutines? The conventional wisdom says CPU-bound goroutines are preempted every 10ms, but this is wrong. #golang
Tweet media one
6
29
171
@felixge
Felix Geisendörfer
4 years
1) Oh man, computer stuff is hard. A small #postgresql thread: After spending weeks optimizing an ETL process to be 3x faster, an index-only scan got 3x slower compared to a replica that hadn't undergone the new ETL process. Main clue: (shared) buffer hits were up by 10x.
8
64
169
@felixge
Felix Geisendörfer
3 years
Starting tomorrow, I'll begin my new job at @datadoghq , working on continuous profiling for #golang 🎉. Most of my work should be open source, and hopefully I'll even get the chance to submit patches to the Go project itself! I'm super excited!
10
4
162
@felixge
Felix Geisendörfer
1 year
#golang folks: How do you measure and evaluate the memory usage of the code you're writing? Do you care about mean usage? Max usage? Do you use MemStats, runtime/metrics, runtime/trace? Here is my attempt to help a colleague. Please share your thoughts!
Tweet media one
Tweet media two
5
30
160
@felixge
Felix Geisendörfer
2 years
🎉 The Go Profiling Guide now covers all profilers built into Go! Big thanks to my new colleague Nick Ripley who contributed the mutex profiler section.
Tweet media one
0
36
158
@felixge
Felix Geisendörfer
2 months
A powerful type system is a double edged sword. Go's type system might be dull, but it prevents a lot of self-harm that is possible in other languages.
@zack_overflow
zack (in SF)
2 months
Whenever someone says they think Rust is a very low-level language I show them this:
Tweet media one
134
67
1K
14
8
156
@felixge
Felix Geisendörfer
11 months
I can finally talk about the new feature I've been working on @datadoghq for the past few months. Please check out our new profiling timeline for Go. We believe it's an absolute game changer for debugging tricky latency problems. #golang #performance 🧵
6
40
149
@felixge
Felix Geisendörfer
2 years
I'm very excited to share what I've been working on at @datadoghq recently. ✨ Connecting Go Profiling With Tracing Check out the blog post to learn how profiling can fill in the gaps for distributed tracing, and how it works under the hood!
@Kuqd
Cyril Tovena 🇪🇺
2 years
Can someone correlate tracing data and profiling data ?
4
2
26
3
29
150
@felixge
Felix Geisendörfer
3 years
📣 Releasing my #golang block profiler notes, covering: - What does the block profiler do? - How can you use it? - How does it work? - What's the overhead? - How accurate is it? It also comes with benchmarks, simulations and pretty graphs 🎉. Please RT
Tweet media one
Tweet media two
Tweet media three
3
36
138
@felixge
Felix Geisendörfer
2 years
📺 Go scheduler: Implementing language with lightweight concurrency (2019) This presentation by @dvyukov outlining the problems solved by Go's scheduler is 🔥. Wonderful slides, explanations and examples!
1
30
137
@felixge
Felix Geisendörfer
6 months
I didn't realize how easy it is to compile a linux kernel and hook it up to gdb under qemu. I even have it integrated with VS Code now. This is a very productive way to explore kernel stuff 🤩.
5
14
128
@felixge
Felix Geisendörfer
3 months
I just finished a vacation project: A working prototype + proposal for a new #golang profile type to break down stack memory usage by function. Link is in the 🧵, PTAL and upvote/RT if you like it 🚀. This might be the first stack memory profiler ... ever? 🤯
Tweet media one
4
19
123
@felixge
Felix Geisendörfer
1 year
Just came across this hidden gem by @k0dvb - a free YouTube course teaching both basic and more advanced concepts of Go. I checked a few videos and it seems really well done 👏🏻
5
15
122
@felixge
Felix Geisendörfer
4 months
I'm very grateful to @datadoghq for the opportunity to contribute to the Go runtime and the Go team at Google for the great collaboration ❤️. The new post on the Go blog puts our frame pointer unwinding optimizations in the context of the larger changes to the tracer in go1.22.
@MattJamesBoyle
Matt Boyle
4 months
Awesome new #golang blog on traces: The blog highlights several key enhancements in Go's execution traces, focused on the runtime/trace package. Here's a summary: - Prior to Go 1.21, the run-time overhead of tracing was somewhere between 10–20% CPU for
Tweet media one
2
36
232
4
10
120
@felixge
Felix Geisendörfer
1 year
Just published a new blog post 🥳 Go arm64 Function Call Assembly It covers only 14 assembly instructions, but tries to do so in full depth. No hand waving at the software/hardware interface 😅. Let me know if you find any mistakes!
2
24
119
@felixge
Felix Geisendörfer
3 years
Sneak peak into my new "Stack Traces in Go" note that I'm working on for my #golang profiler notes. Feedback / questions welcome!
Tweet media one
3
17
120
@felixge
Felix Geisendörfer
2 years
You know the old saying, it takes a village to build a good profiler. So here is an in-depth blog post on the low-level tech and open source collaboration stories behind: Profiling Improvements in Go 1.18 🚀
@felixge
Felix Geisendörfer
2 years
I'm very excited to share what I've been working on at @datadoghq recently. ✨ Connecting Go Profiling With Tracing Check out the blog post to learn how profiling can fill in the gaps for distributed tracing, and how it works under the hood!
3
29
150
2
23
110
@felixge
Felix Geisendörfer
7 months
I'm currently writing an article called "Go Memory Metrics Demystified". It's about runtime.MemStats and runtime/metrics, but also profiling. Let me know if this sounds interesting to you. And also let me know if you have any questions you'd like to see answered. Thanks 🙏
6
8
110
@felixge
Felix Geisendörfer
2 years
Been writing some arm64 SIMD code to optimize a #golang application to save some big $$$ / year. Wish Go supported SVE. But even with NEON I'm seeing 4-5x speedup compared to highly optimized Go 🤩. Hopefully I'll get to do a blog post about this soon!
4
4
107
@felixge
Felix Geisendörfer
1 year
New Blog Post: Learn how the CPU overhead of the Go execution tracer can be reduced by up to 25x by rediscovering the ancient art of frame pointer unwinding 🚀
2
19
104
@felixge
Felix Geisendörfer
1 year
TIL about git-absorb If you're familiar with `git commit --fixup` and `git rebase -i --autosquash`, you'll love it: absorb basically automates the process of figuring out which of your staged changes should be added to which commit in your history 🤯
@mraleph
Slava Egorov
1 year
TIL that somebody ported hg absorb as git-absorb also is sweeeeet
1
3
13
2
17
103
@felixge
Felix Geisendörfer
3 years
I don't use Python for anything other than data visualization and analysis, and it's usually a pleasure. But it's also a good reminder for how slow python can be. Example: Parsing a 500kB YAML file: Python: 28s Go: 500ms
7
8
98
@felixge
Felix Geisendörfer
3 years
I can confirm this. What most people don't realize is how much time is spend in mallocgc in #golang . It's death by a thousand paper cuts that is difficult to see. Here is a toy app hiding 23.7% time in mallocgc. See screenshot 2 where with focus_on(). Real apps look similar!
Tweet media one
Tweet media two
@halvarflake
Halvar Flake
3 years
Running some backend infrastructure in GC'ed languages, I am always amazed how much time is cumulatively spent in GC. 20-30% is not rare. It is a bit crazy that memory management is so expensive.
17
13
114
7
20
101
@felixge
Felix Geisendörfer
7 years
I wrote a blog post about implementing Finite State Machines in #PostgreSQL :
Tweet media one
3
31
100
@felixge
Felix Geisendörfer
5 months
👨🏻‍🔬 Go memory metrics demystified: - How does process RSS relate to go memory metrics? - How do you identify off-heap allocation problems? - Why does the heap profile under-report memory usage by 2x? If this sounds interesting, check out my new post:
1
25
101
@felixge
Felix Geisendörfer
1 year
New blog post: FlameScope for Go 🔥 Learn how to visualize CPU samples from Go execution traces with FlameScope. 🚀
2
25
99
@felixge
Felix Geisendörfer
2 years
Went from being 34 to 0x23 years old today using this ONE WEIRD TRICK. Doctors hate it. Follow to learn the secrets of hexadecimal aging!
Tweet media one
20
0
97
@felixge
Felix Geisendörfer
3 years
Just found myself using the delve #golang debugger instead of printf for debugging a real world test case failure and it was smooth 🤯! Who wants a video? :)
14
2
96
@felixge
Felix Geisendörfer
1 year
Next question: Should Go even preempt running goroutines if there is nothing else to do? Maybe there is a good reason, but I couldn't help myself and cooked up a small patch that disables preemption if there is nothing else todo. runtime/trace is 🤩
Tweet media one
Tweet media two
@felixge
Felix Geisendörfer
1 year
How Often Does Go Preempt Goroutines? The conventional wisdom says CPU-bound goroutines are preempted every 10ms, but this is wrong. #golang
Tweet media one
6
29
171
6
8
92
@felixge
Felix Geisendörfer
2 years
Since more people seem interested in my new software/hardware project than my PRs to telescope.nvim, I guess I should share the release notes for Mira v0.1 as well 🎉.
Tweet media one
@felixge
Felix Geisendörfer
2 years
Not spending a lot of time with computer stuff during paternity leave ... but when I do it's apparently my first PR for telescope.nvim. Also redoing my entire vim config in pure lua 🙃.
7
0
15
15
2
91
@felixge
Felix Geisendörfer
7 years
Totally unproductive today. How am I supposed to care about weird computer shit while the world around me is going up in flames?
4
18
86
@felixge
Felix Geisendörfer
3 months
I am very excited about this. Not only do frame pointers massively simplify CPU profiling, they also enable Off-CPU profiling use cases that require really fast unwinding that is impossible to achieve with today's techniques and hardware. See
@brendangregg
Brendan Gregg
3 months
New blog post: The Return of the Frame Pointers (Fedora, Ubuntu)
Tweet media one
19
193
818
1
12
85
@felixge
Felix Geisendörfer
3 years
I think I was able to significantly improve the state of art of the "Processing Large Files" challenge (linked) in #golang . My solution uses 3.5x less CPU time than the best solution I found 🌍🌿. Would anybody be interested to read a blog post about it?
6
11
84
@felixge
Felix Geisendörfer
3 months
Go's memory profiler has a limit of 32 stack frames. Today I looked at a case where over 50% of a live heap profile exceeded this limit, which made me very sad. So I took another look at the issue, and I might have been able to cook up a patch 🤞.
Tweet media one
3
11
84
@felixge
Felix Geisendörfer
2 years
What's the german word for being unable to merge a PR to disable a flaky test due to another flaky test failing? I'll offer Testinstabilitätsgefängnis or Wackeltesthölle, but I'm open to better suggestions 🤣
21
6
82
@felixge
Felix Geisendörfer
7 months
Yes!!!! Frame pointers everywhere! This stuff is going to enable so many amazing performance and debugging wins, I'm very excited ✨ No more eval of turing complete DWARF bytecode non-sense. No more huge unwind tables. h/t @KnuX
6
9
80
@felixge
Felix Geisendörfer
4 months
🥳 My presentation for @gopherconeu in Berlin (June 17-20th) was accepted! How to Win Frames and Influence Pointers tl;dr: How frame pointer unwinding was implemented in the execution tracer, and what it means to Go devs interested in performance. Looking forward to the event!
4
4
79
@felixge
Felix Geisendörfer
1 year
Came across this before, but just did a more careful reading. I didn't realize that context switching is 20x more expensive than mode switching in linux, e.g. ~100ns vs ~2000nsec on fast HW. What's making context switching so expensive? TLB flushes?
5
13
78
@felixge
Felix Geisendörfer
1 year
Cattle, not pets - sure. But databases are Wagyu class. Feed them the best CPU, Memory and NVMe you can afford. I hear they also like music, wine and massages.
5
6
77
@felixge
Felix Geisendörfer
3 years
@polizeiberlin Ich meine hätte Stefan das Gespräch beendet als er dezent auf seinen Verstoß hingewiesen wurde ... okay. Kann man mal tolerieren. Aber wenn Stefan das "wurscht" ist und er einfach weiter telefoniert? Puh, da verstehe ich jetzt nicht warum die Polizei da tolerant sein soll?
1
0
71
@felixge
Felix Geisendörfer
3 years
#golang #performance folks, here are are my notes on "Goroutine Profiling in Go". It's probably the most comprehensive "docs" you'll find for this, at least I'm not aware of anything similar 🙃. Looking forward to feedback / questions / etc.!
Tweet media one
4
19
77
@felixge
Felix Geisendörfer
3 months
Bold claim. Doesn't match my intuition nor what I heard from most rust devs. That being said, I'd love to learn more! Maybe the "internal data from Google projects in 2022 and 2023" won't be published. But was methodology mentioned? Number of commits / LoC 🙈? Something better?
@spastorino
Santiago Pastorino
3 months
“Rust teams at Google are as productive as ones using Go, and more than twice as productive as teams using C++.” @larsberg_ #RustNationUK
Tweet media one
43
226
1K
17
4
77
@felixge
Felix Geisendörfer
3 years
11M IOPS & 66 GB/s IO on a Single ThreadRipper Workstation 🤯
Tweet media one
3
12
76
@felixge
Felix Geisendörfer
3 years
Blog Post: Advent of Go Profiling: Day 1-1 🚀 Going from 325 to 92 ns/op. Can you do better? Send me a link to your v4!
8
18
69
@felixge
Felix Geisendörfer
2 years
Found another great use case for ChatGPT. Take some real Go code I'm currently working on that contains a state machine and have it generate the graphviz code for it.
Tweet media one
Tweet media two
1
5
72
@felixge
Felix Geisendörfer
11 months
I love my work, got no financial worries, a beautiful family and wonderful friends. But the future of our planet has me so worried that it’s hard to feel motivated some days. How do y‘all cope with this? Tech optimism? Denial? Nihilism? Hedonism? I’m open to suggestions :)
23
6
71
@felixge
Felix Geisendörfer
9 months
TIL: Using go test -race also randomizes the operation of the #golang scheduler 🤯. You should always run the race detector, but this makes it even more important as it also helps to detect logic races (not just data races).
Tweet media one
0
15
66
@felixge
Felix Geisendörfer
3 months
I work on profilers. This is an immediate bookmark for me. This is a really great summary. And a reminder what a mistake DWARF unwinding. Omitting frame pointers on x86-64 was a mistake!
@disruptnhandlr
Amir
3 months
I'm embarrassed to say it, but I didn't have a robust intuition about stack frames, unwinding and exception handling stuff (CIE, FDE, CFI, eh_frame and especially all things DWARF). This great note made it much clearer:
5
27
166
5
9
69
@felixge
Felix Geisendörfer
3 years
Is there a German word for the anxiety you get when trying to add a newline in a iMessage on macOS and you're not sure if you need to hold shift or alt in order to avoid sending it prematurely?
16
4
68
@felixge
Felix Geisendörfer
3 years
🎉 My second patch for Go profiling just landed (again, first merge was reverted b/c flaky testing). This will improve the accuracy of pprof labels in Go 1.18. Together with @rhyshiltner 's patch for GH 35057 1.18 will be a great release for profiling!
2
3
68
@felixge
Felix Geisendörfer
3 years
👋🏻 I made a video: Using Delve to Examine Memory in Go It's 5 minutes and shows how to examine the memory of a slice header in #golang as well as the array pointer it contains. If you like it, I'll make more Go videos like this, e.g. about profiling.
1
3
67
@felixge
Felix Geisendörfer
4 years
PSA: Google Maps favorites uses a ring buffer of 500 items. If you add more, it silently (!!) deletes old entries. 😭😭😭 cc @ctavan who told me a about this
Tweet media one
8
10
65
@felixge
Felix Geisendörfer
4 years
#Git Protip: Add this to your ~/.gitconfig to have `git branch` show your most recent branches on top. 😎 [branch] sort = -committerdate
3
5
64
@felixge
Felix Geisendörfer
2 years
I love working on go profiling at a company where I can dogfood my own product to save a senior dev salary per year in a one-day hackathon project 💸.
3
4
64
@felixge
Felix Geisendörfer
4 years
#Golang #PostgreSQL users. Have you considered using native JSON features to get basic ORM features without needing a 3rd party library? Take a look:
Tweet media one
12
13
64
@felixge
Felix Geisendörfer
7 years
Agreed. But IMO JS doesn't get scary until you have to maintain the mess you made. It's a trap 🙈
4
22
64
@felixge
Felix Geisendörfer
3 years
@La_Rainette The funny part is that the diagram just shows what happens for line 1 right? The call to foo() might need a much bigger picture 😄.
2
0
63
@felixge
Felix Geisendörfer
3 years
Did you know: You can't just copy & paste code from another open source project into yours just because both have the MIT License. You need to include the license/copyright info. Yes, I'm subtweeting. Don't make me @ you : p.
9
11
63
@felixge
Felix Geisendörfer
3 years
First shot AstraZeneca 💉✅. Risk profile for a 30-something isn't great compared to waiting for Biontech, and I'd like to say I'm doing this for society. But if I'm being honest, this is mostly for retribution. Fuck you SARS-COV-2. May you vanish forever.
2
1
63
@felixge
Felix Geisendörfer
3 years
Didn’t take a laptop on this vacation, but the cloud found me anyway 🙈. Also just finished my 34th ride around the sun today 🎉.
11
0
63
@felixge
Felix Geisendörfer
2 years
Working on a profiling product that helps to identify and achieve 6 figure costs savings on a regular basis is fun. GIF: Cloud Provider vs Profiler.
1
7
62
@felixge
Felix Geisendörfer
3 years
The quickest way to rid yourself of the notion that you understand computers is to benchmark stuff and look at the raw data. Depicted here: A JSON parsing workload (16 goroutines) under macOS vs Linux w and w/o profiling. The more you look, the more odd stuff you find 🙈
Tweet media one
Tweet media two
6
8
60
@felixge
Felix Geisendörfer
11 years
I <3 #golang pprof graphs. If #nodejs had this, it would have saved me 100+ hours with node-mysql. http://t.co/Im5I60WMcb
Tweet media one
6
49
62
@felixge
Felix Geisendörfer
7 months
PSA: Datadog is available to open source projects for free! In particular our CI Visibility product is really amazing for finding bottlenecks and flaky tests. You can learn more about this program, and some of our other OSS contributions here.
3
15
60
@felixge
Felix Geisendörfer
8 months
Having execution tracing enabled in prod is fantastic. Look at this GC cycle causing absolute havoc on scheduling latency 😱. Fix: Reduce allocs or increase GOMAXPROCs.
Tweet media one
Tweet media two
4
13
60
@felixge
Felix Geisendörfer
2 years
Just came back from a one week trip to the @datadoghq office Paris. OMG. Meeting my colleagues for the first time after 1.25 years in person was amazing. They are incredible people. Smart, kind, funny, interesting, ...! I'm really lucky and grateful to be part of this team 🍀🙏🏻.
3
2
61
@felixge
Felix Geisendörfer
1 year
The hardest part of projects is the final grind. The feature is done, the happy path is mind blowing. But there are still hundreds of a little paper cuts. Some are bugs, some are UX, some are performance, etc. The worst part: You'll never be done. You got to call it yourself.
2
6
60
@felixge
Felix Geisendörfer
1 month
Blazingly Fast Shadow Stacks for Go 🚀 In this blog post I'm sharing my research and implementation for shadow stacks in Go which deliver up to 8x faster stack trace capturing than frame pointers 🤯. This offers a glimpse into the future of hardware accelerated shadow stacks.
Tweet media one
1
14
59
@felixge
Felix Geisendörfer
3 years
My first #profiling patch just got merged into the #golang core 🎉🍾🥳. In other news: The block profile will become a little more accurate in Go 1.17. 🙏🏻 Huge thanks to @dvyukov and @prattmic for reviews & discussions.
1
3
59
@felixge
Felix Geisendörfer
2 years
🎅🏻 Dear Santa, please add native support for embedding code snippets in google docs.🎄🎁❤️
3
5
58
@felixge
Felix Geisendörfer
1 year
Weekend project completed 🥳 traceutils anonymize <input> <output> Takes a runtime/trace file and strips it of sensitive information (file names, function names, user logs). This was part of a learning exercise to understand the binary format.
Tweet media one
1
5
58
@felixge
Felix Geisendörfer
2 years
A new @datadoghq feature my team and I have worked on has officially gone live (public beta) now: Watchdog Insights for Continuous Profiler 🎉 The idea is to automate some of the problem analysis and solution proposal a profiling expert on your team might provide.
Tweet media one
4
12
56
@felixge
Felix Geisendörfer
3 years
#AstraZeneca is: - 100% effective at preventing hospitalization and death - 79% effective at preventing symptoms Dear Media: PLEASE pick the first number for your headlines. It's the number that matters and that should motivate peoples decision making!
1
13
57
@felixge
Felix Geisendörfer
4 years
We recently upgraded some servers from Oracle #Linux to Ubuntu and saw disk busyness go from 10% to 60% and avg read/write latency go up by 10x. Turns out the culprit was the I/O scheduler! Ubuntu uses cfq by default, OL used deadline. Switching back to deadline fixes things! 🤯
4
11
56
@felixge
Felix Geisendörfer
9 days
👋🏻 I’m at @gopherconeu today and tomorrow. Come and say hello if you want to talk about go profiling, execution tracing, runtime metrics, frame pointers, performance, otel or anything else :). #gopherconEU #golang
Tweet media one
2
7
78
@felixge
Felix Geisendörfer
2 years
I love JIRA.
15
1
54
@felixge
Felix Geisendörfer
2 years
Comparing my Go vs SIMD implementation to check if a string consists out of a set of valid characters and doesn't have double underscore sequences. SIMD is up to 5x faster for bigger inputs 🎉. Blog post coming soon :).
Tweet media one
5
0
55
@felixge
Felix Geisendörfer
3 years
@polizeiberlin Erinnert mich irgendwie an was ...
Tweet media one
1
0
51
@felixge
Felix Geisendörfer
4 years
Last Friday I made one of the hardest decisions of my life. I chose my love and commitment to open source over an amazing job with people I love. That being said, I'm excited about what lays ahead in my new job. Expect to see more #Go profiling stuff from me starting Jan 4th.
6
1
54
@felixge
Felix Geisendörfer
3 years
#golang pro tip: Use -m with the godbolt compiler explorer to see your code annotated with compiler tooltips about inlining, heap allocation, etc. Try it yourself:
2
9
53
@felixge
Felix Geisendörfer
4 years
1) Quick #nodejs thread. I just came across an interesting issue that prevents timers from being fairly scheduled when there is a busy network socket.
2
17
54