Skip to content

Tate Config

mbottini edited this page Apr 24, 2018 · 4 revisions

Based on the conversation today at the library, we've decided to go in the direction of having a single JSON file for everything.

Glossary

Run

The information needed to perform a single invocation of SpecJBB. This currently looks like the following:

{
    "template_type" : "HBIR_BUT_BETTER",
    "args" : {
        "arg1" : 5,
        "arg2" : "foobar",
        "arg3" : false
    }
}

TODO: There's a possibility of adding a third key-value pair to each Run, called props_extra. This would provide an opportunity to give fine-tuning capability for each Run. This is not necessary, and we're not even sure if we should put it in. But it's a possibility.

Args

Run-specific values that are specified by the user.

Properties

A property is a single line in the .props file that will be passed to SPECjbb.

Translations

A translation maps an Arg to a Property.

Annotations

TemplateType

The information needed to

  • Determine which args are needed from the user. (args)
  • Determine which type each arg is. (types)
  • Determine the correspondence between args and .props properties. (translations)
  • Provide default properties that will always be written to the .props files (default_props).
  • Provide annotations for each arg for dialogue.

An example of this is the following:

{ 
    "args" : [
      "Tag",
      "Kit Version",
      "JDK",
      "RTSTART",
      "JVM Options",
      "NUMA Nodes",
      "Data Collection",
      "T1",
      "T2",
      "T3"
    ],

    "annotations" : {
      "Tag" : "Name of the run",
      "Kit Version" : "Version of SpecJBB",
      "JDK" : "Version of the JVM that will run SpecJBB",
      "RTSTART" : "What percentage of total output will we start at",
      "JVM Options" : "What additional arguments, if any, will be passed to the JVM",
      "NUMA Nodes" : "How many NUMA nodes will SpecJBB use",
      "Data Collection" : "What data collection process will monitor while running SpecJBB",
      "T1" : "How many threads does Tier 1 have access to",
      "T2" : "How many threads does Tier 2 have access to",
      "T3" : "How many threads does Tier 3 have access to"
    },  

    "types" : { 
      "Tag" : "string",
      "Kit Version" : "string",
      "JDK" : "string",
      "RTSTART" : "integer",
      "JVM Options" : "string",
      "NUMA Nodes" : "integer",
      "Data Collection" : "string",
      "T1" : "integer",
      "T2" : "integer",
      "T3" : "integer"
    },  

    "translations" : { 
      "RTSTART" : "specjbb.controller.rtcurve.start",
      "T1" : "specjbb.forkjoin.workers.Tier1",
      "T2" : "specjbb.forkjoin.workers.Tier2",
      "T3" : "specjbb.forkjoin.workers.Tier3",
      "NUMA Nodes" : "specjbb.group.count"
    },

    "default_props" : {
      "specjbb.controller.type" : "HBIR",
      "specjbb.time.server" : false,
      "specjbb.comm.connect.client.pool.size" : 192,
      "specjbb.comm.connect.selector.runner.count" : 4,
      "specjbb.comm.connect.timeouts.connect" : 650000,
      "specjbb.comm.connect.timeouts.read" : 650000,
      "specjbb.comm.connect.timeouts.write" : 650000,
      "specjbb.comm.connect.worker.pool.max" : 320,
      "specjbb.customerDriver.threads" : 64,
      "specjbb.customerDriver.threads.saturate" : 144,
      "specjbb.customerDriver.threads.probe" : 96,
      "specjbb.mapreducer.pool.size" : 27
    }
}
Clone this wiki locally