Tooling that gives insight into the state of async runtimes
How many tasks are running and what is their state
What are tasks blocked on and why?
Where is memory allocated?
Where is CPU time spent?
Flamegraph of where things spend their time
Perf-style profile of where things spend their time
Tooling should also allow you to limit profiles to a particular request or to requests that meet particular criteria (e.g., coming from a particular source)
Tooling should detect common hazards and identify them, suggesting fixes
Tasks that clone a Waker but don't trigger it
Tasks that don't respond to a request to cancellation for a long time
Outlier tasks that sleep for a very long time without being awoken
Tooling should permit "always on" profiling that can be used in production
Tooling can provide profile-based feedback:
Where to "heap-allocate" futures
Poll functions that execute for a long time without yielding
Imbalanced workloads across cores
Tooling can be either customized or integrated into existing tools like perf, gdb, lldb, etc, as appropriate