[concurrency-interest] Fork/Join traces: instrumentation and rendering
aleksey.shipilev at gmail.com
Fri Jun 8 15:47:56 EDT 2012
I was crawling through nastly performance problem with FJP and my
particular use case. This forced me to do the instrumentation in FJP,
and also sketch up some FJP-specific analyzers.
While thinking around what to do with that next, I figured it would be
to ask if this tool is something community wants/needs, or I can just
throw it in the trunk, and leave it there. (Maybe it is not even worth
to contaminate GitHub with).
The bundle is at http://shipilev.net/pub/stuff/fjp-trace/. See README
there. In short, this provides instrumented FJP, which dumps the
execution traces, which then can be analyzed, down to fork-join
dependencies, steals, parks-unparks, etc.
For instance, this is one use case I was chasing:
- that's a 4x10x2 Nehalem running 8b39-lambda
- doing FJP.submit().get(), hence waiting for external task to complete
- note that FJP ramps up really quickly, in less than 5ms
- two heavily out-balanced tasks are seen as green bars
- six joiners are waiting on those tasks to complete
- one could also estimate the actual integral parallelism
More information about the Concurrency-interest