Diogo Netto
Diogo Netto
Thanks for the clarification.
An additional note: this kind of wall-time/all tasks profiler is also implemented in Go (and denoted as goroutine profiler there), so there is some precedent for this in other languages...
@nickrobinson251 I can't assign you as reviewer... Feel free to assign yourself or post review comments otherwise.
> I think this is related to https://github.com/JuliaLang/julia/pull/55103. Could the metrics here be useful in that too? For diagnosing excessive scheduling time? I can't immediately see how this PR would...
> For diagnosing excessive scheduling time https://github.com/JuliaLang/julia/pull/55103 seems like a much more direct approach for doing so, at least.
@vtjnash: IIRC your comments stem from the fact that a GC may get interleaved with `jl_get_all_tasks_arraylist` and invalidate the contents of `live_tasks` -- both by freeing unreachable tasks and by...
> Can you share some examples e.g. simple workloads you've tried this out on and what the profiles look like? Yes, here they are: ## Workload 1: a_bunch_of_tasks_waiting_on_channel.jl ```Julia using...
A few more workloads suggested by @NHDaly. ## Workload 3: compute_heavy.jl ```Julia using Base.Threads using Profile using PProf ch = Channel(1) const MAX_ITERS = (1
> Is it expected that the currently-scheduled tasks seem to have their stacks starting at a different frame than the waiting tasks? Good question, I don't know. Will investigate this.
Wrote this short demo on how to use the profiler: https://github.com/d-netto/Wall-time-Profiler-Demo. Feedback is welcome. Perhaps we should add this to some documentation page in Julia itself.