Spark Visualization in ThreadScope
Duncan Coutts*, Mikolaj Konarski, Andres Loeh
ThreadScope is a powerful debugging tool for parallel Haskell programs. It reads GHC-generated event logs and displays them in a user-friendly form, showing the phases of (in)activity per CPU as well as garbage collections.
However, a significant amount of experience and knowledge about the GHC internals is required to successfully read the output of ThreadScope, and some information is simply lacking.
We have extended GHC to generate events that sample the size of the spark pool and deliver stats about spark creation and conversion. In ThreadScope, we can display these statistics visually. This helps significantly in debugging some common problems such as generating too many sparks at once (causing overflow), or too few sparks, or sparks of the wrong size.
The presentation will include a demo, inspired by a program we are working on for the Parallel GHC Project.
We are also working on additional visualizations (such as spark lifetime). We are interested in community feedback about other interesting visualizations to implement in ThreadScope, so there is plenty of potential for discussion.