minheap

This subcommand runs benchmarks with different configs while varying heap sizes in a binary search fashion in order to determine the minimum heap required to run each benchmark.

The result is stored in a YAML file. The dictionary keys are encoded config strings. For each config, there is one dictionary per benchmark suite, where the minimum heap size for each benchmark is stored. An example is as follows.

temurin-17.openjdk_common.hotspot_gc-G1:
  dacapochopin-69a704e:
    avrora: 7
    batik: 189
temurin-17.openjdk_common.hotspot_gc-Parallel:
  dacapochopin-69a704e:
    avrora: 5
    batik: 235

At the end of each run, minheap will print out the configuration that achieves the smallest minheap size for most benchmarks. The minheap values for that configuration will be printed out, which can then be used to populate the minheap values a benchmark suite, such as a DaCapo benchmark suite. An example is as follows.

temurin-17.openjdk_common.hotspot_gc-G1 obtained the most number of smallest minheap sizes: 8
Minheap configuration to be copied to runbms config files
dacapochopin-69a704e:
  avrora: 7
  batik: 189
  biojava: 95
  eclipse: 411
  fop: 15
  graphchi: 255
  h2: 773
  jme: 29
  jython: 25
  luindex: 42
  lusearch: 21
  pmd: 156
  sunflow: 29
  tomcat: 21
  tradebeans: 131
  tradesoap: 103
  xalan: 8
  zxing: 97

Usage

minheap [-h] [-a|--attempts ATTEMPTS] CONFIG RESULT

-h: print help message.

-a (preview ⚠️): set the number of attempts. Overrides attempts in the config file.

CONFIG: the path to the configuration file. This is required.

RESULT: where to store the results. This file contains both the interim results and the final result. An interrupted execution can be resumed by using the same RESULT path. This is required.

Keys

maxheap: the upper bound of the search.

attempts (preview ⚠️): for a particular heap size, if an invocation passes or fails with OOM (timeout treated as OOM), the binary search will continue with the next appropriate heap size. If an invocation crashes and if the total number of invocations has not exceeded ATTEMPTS, the same heap size will be repeated. If all ATTEMPTS invocations crash, the binary search for this config will stop, and minheap will report inf.