Ritesh Oedayrajsingh Varma's Avatar

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)

365 Followers  |  232 Following  |  98 Posts  |  Joined: 14.08.2023  |  1.741

Latest posts by rovarma.bsky.social on Bluesky

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
Preview
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 โ€” ๐Ÿ‘ 6    ๐Ÿ” 1    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0
Preview
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 โ€” ๐Ÿ‘ 105    ๐Ÿ” 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
Post image

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
Post image Post image

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
Post image

> 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
Post image

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

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.

01.04.2025 18:07 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Oof. Not wrong tho๐Ÿ˜‚

01.04.2025 15:40 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

*cracks knuckles*

*starts writing Yet Another String Parser for Yet Another Commandline Tool*

01.04.2025 15:14 โ€” ๐Ÿ‘ 6    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

Yeah, what David said, but substitute Araxis for BC instead :-) Youโ€™re missing out with just the p4 tools; itโ€™s not just about diffing changes.

01.04.2025 12:27 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Yeah, thereโ€™s nothing โ€œwrongโ€ with it, I just canโ€™t get used to it. Itโ€™s fine for smallish diffs, but as soon as anything more structural is going on I canโ€™t read it anymore with those big hatched blocks.

Funnily enough BC was the tool I started with and used to swear by, but I just cannot anymore.

01.04.2025 06:13 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

Often find myself shelving on Linux and unshelving on Windows just to be able to use Araxis to review a change. Sigh.

31.03.2025 16:01 โ€” ๐Ÿ‘ 1    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

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.

31.03.2025 16:00 โ€” ๐Ÿ‘ 3    ๐Ÿ” 0    ๐Ÿ’ฌ 5    ๐Ÿ“Œ 0
Post image

1) what

27.03.2025 10:55 โ€” ๐Ÿ‘ 4    ๐Ÿ” 0    ๐Ÿ’ฌ 1    ๐Ÿ“Œ 0

EINVAL, the "something went wrong" of the Linux kernel.

What went wrong? Who knows, read the source!

25.03.2025 09:13 โ€” ๐Ÿ‘ 0    ๐Ÿ” 0    ๐Ÿ’ฌ 2    ๐Ÿ“Œ 0

Oh it is the first one, wifi/audio not working is just expected behavior. I would never bother debugging that, would just google for the magic commandline to fix it :P

And will do!

22.03.2025 06:08 โ€” ๐Ÿ‘ 2    ๐Ÿ” 0    ๐Ÿ’ฌ 0    ๐Ÿ“Œ 0

@rovarma is following 19 prominent accounts