Task locations not exposed for tokio-console
Actix tasks don't show their source location in tokio-console.
Expected Behavior
I would expect to see the source location of each task in tokio console
Current Behavior
Most of the source locations appear to be from inside tokio:
Possible Solution
It looks like this has been partially fixed in tokio: https://github.com/tokio-rs/tokio/pull/4483 but may need some additional work on the actix side as mentioned on reddit:
Note that actix-rt's spawning functions will probably also need to add #[track_caller] attributes, or else you'll just end up with a bunch of locations within actix-rt, rather than in your code. https://www.reddit.com/r/rust/comments/snt5fq/can_tokioconsole_profile_actixrt
Steps to Reproduce (for bugs)
- Add Console Subscriber to an actix app
- Launch tokio-console
Context
It is difficult to debug performance issues in async applications, such as actix-web. Most traditional profiling yields a nested async/future/tokio things but it's hard to discern where the actual bottlenecks are occurring. tokio-console is a useful tool to get better insights into async systems and it would be great if actix played nicely with it.
Your Environment
- Rust Version: 1.57.0
- Actix Web Version: 4.0.0-rc.1
tbh, this is way too annoying to support properly until tokio::task::Builder is stable