Ritesh Oedayrajsingh Varma

@rovarma.bsky.social

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

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!

Superluminal@superluminal.eu · last mo.

Ever wanted to have your AI agent figure out why your code is slow? Now you can, with Superluminal's new CLI and MCP interfaces, enabling agentic analysis of performance across all our supported platforms and languages. superluminal.eu/applications...

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!

Superluminal@superluminal.eu · last mo.

We're finally bringing our powerful and user friendly CPU profiler to Linux! The beta version is now publically available, and it's free for 60 days during the open beta, so there's really no excuse not to try it out! Just download, extract, optimize. superluminal.eu/applications...

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!

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...

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.

rovarma.com

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 :-)

Stefan Reinalter@molecularmusing.bsky.social · 6mo ago

I've been working on something new since August 2025 and have decided to finally spill the beans: Introducing "Project Echo", a deterministic Record & Replay tool for PS5: www.youtube.com/watch?v=K_sd... Please read the video description and let me know your brutally honest feedback!

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!

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...

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.

rovarma.com

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...

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 …

larstofus.com

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?"

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):

BildBild

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.

Ritesh Oedayrajsingh Varma@rovarma.bsky.social · last yr.

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.

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.

> 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'?

Bild

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.

The thing I perhaps miss the most while developing on Linux, besides obviously a good debugger, is Araxis Merge. I've been using Beyond Compare since we started on Linux support, and I just *cannot* get used to it. The diff view is just completely unparseable to my brain.

Don’t think I’ve ever written as much string parsing code as I have while working on Linux support. /proc files, cmdline tool output, etc, so much stringly typed stuff. Feels bad knowing you’re really just doing binary data -> string -> binary data conversions all over the place.

Built a new PC with NVMe drives for the first time yesterday. Having grown up with the left side, I cannot adequately express how absolutely insane it is to me that the right side exists and is widely available today. how it started how it's going

image of floppy disksimage of a 2TB NVMe drive