Skip to content
Felix S. Klock II edited this page Jul 28, 2013 · 1 revision

Felix wrote some Scheme code to help generate gnuplot data files and scripts. The code is organized into layers; this wiki page documents those layers, starting from the (expected) entry points and working down to the bottom utility libraries.

The focus of the scripts is on plotting:

  • Utilization (Min Mutator Utilization, as well as Max COMP Utilization where COMP is a collector component).
  • Max Pause Times (for each component)
  • Overall Elapsed Time (broken down by component)
  • Peak Memory Usage (broken down by component)
  • Max Memory Usage for each component

One often wants to compare results for a particular set of benchmarks, so Felix is keeping much of the scripts in the same directory as his benchmarks for now. But Felix also wants to be able to quickly invoke the plot routines interactively (even just to visualize the MMU of the currently running Larceny process), mostly to get rough ideas of how the system he is interacting with is performing. So many of the plot routines that take a benchmarking log file (to extract plot data from) as an argument can also take no arguments at all, in which case the code will query the currently running Larceny process to find the information to plot (the latter option is only meant for gathering rough intuitions, or for quick easy illustration; I use it for this in examples below).

The Scheme scripts currently live in the incrsumz branch, most of them specifically in [source:branches/pnkfelix/incrsumz/larceny_src/test/Benchmarking/GC test/Benchmarking/GC] (specifically, Felix is putting work in-progress there; the scripts that contain general functionality that Felix deems worth exporting elsewhere are moved to [source:branches/pnkfelix/incrsumz/larceny_src/lib/Experimental lib/Experimental]).

All of the plotting code goes through a layer of Scheme code to generate gnuplot script and data files; the important thing about this is that these files can thus be post-processed or archived on their own -- you can hand your plot data off to other parties who do not need to know anything about these Scheme scripts for generating the plots.


The main file to load is [source:branches/pnkfelix/incrsumz/larceny_src/test/Benchmarking/GC/plot-stats.sch plot-stats.sch]

Procedures of note:

  • plot-mmu (requires MMU stats; see -mmusize option documented at: MinMutUtilization)
  • plot-mmu2 (like above, but in addition to min mutator, also plots collector components' max time utilization).
  • plot-memory-usage
  • plot-bench-descriptions (this one is stricter about what input it accepts, namely the log files generated by [source:branches/pnkfelix/incrsumz/larceny_src/test/Benchmarking/GC/bench-gc.scheme09.sh bench-gc.scheme09.sh]
Clone this wiki locally