Sign in

Ritesh Oedayrajsingh Varma

@rovarma.bsky.social
407 followers 234 following 125 posts

Building Superluminal (www.superluminal.eu / @superluminal.eu), a user-friendly CPU sampling profiler for C/C++, Rust & .NET on Windows & consoles. Ex-Guerrilla Games (H:ZD)

PostsRepliesMedia
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 16/09/2026
Seeing actual performance optimizations made with Superluminal will never get old to me :-) Check it out!
0110
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 30/06/2026
So: if you're running a distro that meets the min. kernel & glibc versions, it should work, *assuming* WSL implements the required eBPF features we need, which it seems to do by the report of another user that got capturing working in WSL. Hope that made sense :)
010
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 30/06/2026
And on the other hand, there's support for eBPF, which I believe depends on the virtualization layer how well that's supported. This is the part that's dependent on WSL I think.
100
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 30/06/2026
I'm not entirely sure. There's two sides to it I think. On the one hand there's the distro you're running, but that's really just shorthand for the kernel version & glibc version. Superluminal needs kernel 5.10+ and glibc 2.30+. This part is independent of WSL (or any other kind of virtualization).
200
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 30/06/2026
Hey Jeff! Thanks for the feedback -- that's fixed now. Let us know how you get on with the Linux version!
010
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 30/06/2026
fwiw, we had somebody else test it out, and it appears to work for them, at least the capturing part via SuperluminalCmd. So perhaps WSL will move to the officially supported list soon :)
100
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 30/06/2026
maybe! it’s not something we’ve tried ourselves; it depends on whether WSL supports eBPF (and to what extent) as we rely on that for our capturing backend
100
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 29/06/2026
This has been a fun one to work on too. It's a night and day difference what a difference it makes when an AI agent has access to actual perf data instead of having it guess at why code is slow. We've been test driving this both internally and externally, and it's looking great :) Give it a try!
010
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 29/06/2026
The year of Superluminal on the Linux desktop is finally here! It has been a huge undertaking, way, way (way) bigger than we ever expected, so I'm super excited to finally release this to the wild. Please give it a try and let us know how it works for you!
2122
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 10/06/2026
reading literally anything online in 2026
070
Reposted by Ritesh Oedayrajsingh Varma
Superluminal @superluminal.eu · 13/05/2026
Today is a beautiful day for updates! On the Stable channel: rolling up a large number of features, perf optimizations, and QoL changes made over the past months On the Insider channel: support for our instrumentation API has been implemented on PS4 & 5! Go check it out!
182
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 28/04/2026
Hey, sorry, missed this. We haven’t tested on Steam Deck yet, but we’re certainly interested in supporting it. We’re focusing on the mainline distributions first, but would like to investigate deck support once that’s out
010
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 18/03/2026
Soon (tm)!
230
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 18/03/2026
#neverforget
010
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 17/03/2026
Oh and > I don't know much about eBPF The previous article, which also involved a dive into the kernel, has a lot of info on it: rovarma.com/articles/fro...
rovarma.com
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.
010
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 17/03/2026
Thanks Jaap! > Do you guys ever do presentations somewhere? Would be cool to hear some fun stories! You’re kinda looking at it :-)
110
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 17/03/2026
There was this one time where ETW was broken for many people for like an entire year on Windows. Soooo… 😂 At least on Linux we can fix the issues ourselves!
130
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 17/03/2026
It’s a good article! And in the kernel’s defense… they often don’t really have an alternative to spinlocks, especially in cases like this. But definitely goes to show that getting anything to do with spinlocks right is really hard.
110
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 17/03/2026
New article! A user is reporting full system freezes while using Superluminal on Linux. What do you do? Cry? Well, we did a little bit. But we also dove into the kernel...again, this time fixing several issues in eBPF's spinlock implementation. Read all about it: rovarma.com/articles/a-t...
rovarma.com
A tale about fixing eBPF spinlock issues in the Linux kernel | Ritesh Oedayrajsingh Varma
A system freeze led us deep into Linux spinlock internals, where we helped find not one but three bugs in the kernel's resilient locking code used by eBPF.
24012
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 19/02/2026
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 :-)
070
Reposted by Ritesh Oedayrajsingh Varma
Superluminal @superluminal.eu · 19/02/2026
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!
084
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 05/01/2026
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!
060
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 11/12/2025
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...
rovarma.com
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.
13012
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 02/12/2025
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.
020
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 02/12/2025
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.
110
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 02/12/2025
> if you're interested definitely!
100
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 02/12/2025
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.
110
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 01/12/2025
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!
072
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 24/11/2025
I've been wanting to start a blog for a while, and finally decided to bite the bullet. The first article of hopefully many more to come is about, you guessed it, profiling & optimization. RTs appreciated! rovarma.com/articles/opt...
rovarma.com
Optimizing libdwarf .eh_frame enumeration | Ritesh Oedayrajsingh Varma
For the Linux version of Superluminal we rely on unwind information stored in the .eh_frame section in a binary to perform stack unwinding. We’ll go over optimizations we made to libdwarf that greatly...
0127
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 30/09/2025
Great post! Including a sneak peek of a certain profiler on a platform that is very much not Windows ;-)
031
Reposted by Ritesh Oedayrajsingh Varma
Lars Thießen @larstofus.bsky.social · 27/09/2025
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...
larstofus.com
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 …
03712
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 23/09/2025
to be fair, you could have seen this coming from the “runs inside the terminal” as if that is something positive :p
030
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 27/07/2025
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!
251
Reposted by Ritesh Oedayrajsingh Varma
Lars Thießen @larstofus.bsky.social · 27/07/2025
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
larstofus.com
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…
310420
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 15/07/2025
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?"
030
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 03/07/2025
tfw you're collateral damage in the Great AI Wars
000
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 27/06/2025
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! ;-)
140
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 25/06/2025
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 :-)
020
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 25/06/2025
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):
170
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 25/06/2025
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.
041
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 23/06/2025
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.
020
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 20/06/2025
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 :-)
010
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 19/06/2025
And of course, it is as tedious as instrumentation-based profiling always is.
110
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 19/06/2025
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.
130
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 07/04/2025
Hell, I'm a developer, and most of the time I just give up when confronted with this crap.
100
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 07/04/2025
> 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'?
210
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 04/04/2025
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.
120
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 04/04/2025
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.
0121
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 04/04/2025
You’re one of today’s lucky 10000! Though I am sad you went with the clearly inferior BC 😛
010
Ritesh Oedayrajsingh Varma @rovarma.bsky.social · 01/04/2025
fwiw, we switched to mimalloc a few releases ago (and yes, it made a huge difference in qt perf), but we ran into allocator related crashes on Windows on Arm devices. Switched it back to the default allocator. I doubt that platform matters to you, but thought I’d mention.
110