Somehow missed this latest piece of technical wizardry from Stefan. My first thoughts were βthis is awesome, but looks super hard to get into a reliable stateβ.
But I thought the same thing about Live++ and Stefan knocked it out of the park there. If anybody can make this happen, itβs Stefan :-)
19.02.2026 17:39 β
π 7
π 0
π¬ 0
π 0
We've just released a new Insider update with some much-requested features, like being able to specify env vars when running, auth support for symbol servers, and proper progress reporting for symbol downloads. And of course, many fixes & QoL improvements.
Go check it out!
19.02.2026 15:44 β
π 8
π 4
π¬ 0
π 0
Check out this new article by Jelle about how we stream unsorted data in sorted order to ensure a fixed upper memory bound while processing gigabytes of capture data in Superluminal!
05.01.2026 15:05 β
π 6
π 0
π¬ 0
π 0
From profiling to kernel patch: the journey to an eBPF performance fix | Ritesh Oedayrajsingh Varma
A story about how an innocent profiling session led to a change to the Linux kernel that makes eBPF map-in-map updates much faster.
New article! What do you do when profiling your code shows the slowdown isn't in your code, but deep in the kernel? Why, you grab the kernel source and go spelunking.
How a routine profiling session turned into a Linux kernel patch: rovarma.com/articles/fro...
11.12.2025 13:39 β
π 30
π 12
π¬ 1
π 1
Thanks! Weβre not using this, and I donβt think weβd even be able to correctly open captures made with this option currently. Good to know about it!
Re: slowing down the capture, compared to βnot doing anything at allβ, I can definitely see this being slower indeed.
02.12.2025 07:54 β
π 2
π 0
π¬ 0
π 0
We could, yeah, but that has the disadvantage that other tools wouldnβt be able to open Superluminal captures anymore. Could still be worth it as an option as you say.
For the Linux version weβre doing everything ourselves, and captures there are *much* smaller as a result.
02.12.2025 07:04 β
π 1
π 0
π¬ 1
π 0
> if you're interested
definitely!
02.12.2025 07:02 β
π 0
π 0
π¬ 1
π 0
The ETW file itself is just a straight dump of the raw data without further processing. The goal there is to keep the overhead of capturing low, which means doing as little as possible to log data. Even compression doesnβt happen until after the capture is done.
02.12.2025 06:33 β
π 1
π 0
π¬ 1
π 0
My co-founder Jelle wrote an article about a custom data structure he came up with for Superluminal to efficiently store millions of callstacks.
Check it out!
01.12.2025 15:09 β
π 7
π 2
π¬ 0
π 0
Great post!
Including a sneak peek of a certain profiler on a platform that is very much not Windows ;-)
30.09.2025 19:02 β
π 3
π 1
π¬ 0
π 1
Speeding up the Unreal Editor launch by β¦ not opening 5500 files?
In my last article I wrote about some tooltip optimization to reduce the start time of the Unreal Editor by 2-5 seconds. Turns out people do really care about their editor start time. So much that β¦
It's understandable that Unreal needs to touch a lot of files when starting the editor. But what if I told you that >5500 of those files are not needed for the editor to start at all and are just adding seconds to the editor launch time?
(Fix included!)
#u5 #gamedev
larstofus.com/2025/09/27/s...
27.09.2025 17:36 β
π 37
π 12
π¬ 0
π 0
to be fair, you could have seen this coming from the βruns inside the terminalβ as if that is something positive :p
23.09.2025 17:27 β
π 3
π 0
π¬ 0
π 0
Nice investigation! Sampling profilers > instrumenting profilers when you need to see whatβs happening in code you *didnβt* write. Great example of the right tool for the job!
27.07.2025 16:42 β
π 5
π 1
π¬ 2
π 0
Profiling without Source code β how I diagnosed Trackmania stuttering
A very common side effect of working as a programmer is the constant frustration of not having source code access to all the software you use. Bugs, problems or missing features in your own work caβ¦
My new blog post is there, and it's a bit different from usual: Fixing stutters in your own code is hard enough, but this time I try to fix performance issues in a closed-source game. No source code or debug symbols, but a lot of guesswork. larstofus.com/2025/07/27/p...
#gamedev
#Trackmania
27.07.2025 11:28 β
π 104
π 20
π¬ 3
π 1
Days since I've had to waste time debugging obscure issues caused by Linux's deranged shared library model: 0
"Nice that you're linking to a static library, but there's a shared lib loaded with the same symbol name in it, so I'm gonna use that one instead, ok?"
15.07.2025 21:13 β
π 4
π 0
π¬ 0
π 0
tfw you're collateral damage in the Great AI Wars
03.07.2025 14:11 β
π 0
π 0
π¬ 0
π 0
This was a great example of "how hard can it be?". Well, 4 days of full-time work fighting with Qt, that's how hard.
So glad you like it! ;-)
27.06.2025 07:55 β
π 4
π 0
π¬ 1
π 0
It turns out when youβre writing code that runs on each sample interval to collect stacks, you donβt have a lot of time if youβre targeting high sampling rates :-)
25.06.2025 21:23 β
π 2
π 0
π¬ 0
π 0
We've been micro-optimizing our eBPF code, and it reminds me of the SPU era a bit. The compiler/JIT is so basic that old tricks are useful again. Regular C turns into atrocious ASM, but writing C like it's ASM fixes it. I'm kinda loving it.
It's all stuff like this (before/after):
25.06.2025 20:34 β
π 7
π 0
π¬ 1
π 0
Solved it by the ancient tradition of Just Reading The Code.
Turns out continuously taking the RCU lock by inserting thousands of elements into a BPF_MAP_TYPE_LRU_HASH from within a NMI is Not Good for your system.
Rolled our own (simpler) version directly in eBPF.
25.06.2025 06:55 β
π 4
π 1
π¬ 0
π 0
How does one diagnose the entire Linux system locking up when using a particular eBPF data structure? Are there any post-mortem logs to look at? dmesg is only about the current session.
Asking for a friend.
23.06.2025 14:59 β
π 2
π 0
π¬ 0
π 1
In our case weβre looking at optimizing the perf of a single program, so an overview of which programs are running and how much time they cost is not that useful; we want to know which of the thousands of lines of code in *our* programs we need to focus on :-)
20.06.2025 10:55 β
π 1
π 0
π¬ 0
π 0
And of course, it is as tedious as instrumentation-based profiling always is.
19.06.2025 21:10 β
π 1
π 0
π¬ 1
π 0
Currently investigating & optimizing the perf of our eBPF-based capturing code, but there's no perf tooling for eBPF. So instead, we're profiling with manual instrumentation like savages. Ironically the very thing we originally set out to eliminate with Superluminal.
19.06.2025 21:10 β
π 3
π 0
π¬ 1
π 0
Hell, I'm a developer, and most of the time I just give up when confronted with this crap.
07.04.2025 08:18 β
π 1
π 0
π¬ 1
π 0
> visit website
> notice it isn't working
> open devtools
> 36 errors
I sometimes wonder how non-developers are supposed to use the internet nowadays. Are they just perpetually in a state of brokenness with no idea how to escape it, accepting this as 'normal'?
07.04.2025 08:18 β
π 2
π 0
π¬ 2
π 0
I havenβt used it on Windows so I donβt know if itβs any good, but my hope is currently for the Linux version of the RAD debugger (eventually). It can hardly be worse than the current options, so thereβs that.
04.04.2025 14:22 β
π 2
π 0
π¬ 1
π 0
One thing people really like about Superluminal is that it Just Works, and weβre trying hard to get that same experience on Linux.
But this platform sometimes really feels like itβs actively fighting against anything βjust workingβ and it would really prefer you Do The Work tyvm.
04.04.2025 13:29 β
π 12
π 1
π¬ 0
π 0
Youβre one of todayβs lucky 10000!
Though I am sad you went with the clearly inferior BC π
04.04.2025 12:14 β
π 1
π 0
π¬ 0
π 0