[concurrency-interest] Fork/Join traces: instrumentation and rendering

Aleksey Shipilev aleksey.shipilev at gmail.com
Fri Jun 8 15:47:56 EDT 2012


Hi everyone,

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:
 - http://shipilev.net/pub/stuff/fjp-trace/fjp-trace-sample.png
 - 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

Thoughts?

-Aleksey.


More information about the Concurrency-interest mailing list