I wanted to know what are some standard profiling tools for Rust application runtime data like thread stack, memory usage, async tasks, panics etc.
I tried Tokio console but it does not seem to be production ready and it's quite heavy to run.
I don’t know if such tools exist ( it is hard to prove a negative ), but I don’t use them (other than standard OS tools maybe for checking memory/CPU usage ).
I tend to have features that enable logging of different types if I want to know what is going on in my program. For example logging how long some task took, the state of any caches, memory allocators, or whatever.
I suggest looking for different tools for each of these, as I assume there is no one tool for all of them.
Memory profiling is being discussed here:
I'm not sure what exactly you are after when you say "production grade", I'm getting the feeling this means something specific to you, which might be different than it does for me as someone who write embedded and hard realtime Linux software for industrial control.
But all the standard tools you would use for profiling C and C++ work on Rust (with the caveat that if Rust name mangling isn't supported the result is a bit annoying to read). I'm mostly familiar with Linux tooling, and can't really make any recommendations for Windows or MacOS X.
I like perf + hotspot for CPU profiling on Linux, and heaptrack or bytehound for allocation profiling (heaptrack is easier to use, and nowdays support rust demangling too, bytehound is more advanced and unmaintained but also complete and not buggy).
I would start with Profiling - The Rust Performance Book if you want to look for other options.
For async it is harder. I have experimented with using tracing spans combined with tools like tracing-tracy — profiling in Rust // Lib.rs, and also tokio-dtrace — async Rust library // Lib.rs (patched to work with Linux USDT, see the PRs in the repo).