Get desktop application:
View/edit binary Protocol Buffers messages
The ID for this subject.
The time the event took place.
The MDB user of the running Groningen.
The serving address of the host running Groningen: ${hostname}:${port}.
The user of the running subject.
The serving address of the experimental subject.
The event type.
The running JVM flags.
The fitness score associated with the event.
The configuration parameters that Groningen was operating under when the event was recorded.
An inventory, if any, of the pause time events.
The time at which the Groningen instance started. This is used for fingerprinting.
Representation of fitness score.
Used in:
The name of the fitness score.
The assigned value of the fitness score.
The coefficient for the score.
Representation of Groningen-managed JVM flags.
Used in:
The name of the flag.
The flag's value.
Whether this flag was explicitly set by Groningen or was inherited from subject.
Representation of pause-time metrics.
Used in:
The duration of the event.
What type of event was observed.
Used in:
A subject has been started under a new set of experimental parameters.
A subject was found by Groningen mid-way during experimentation unexpectedly.
A subject's experiment was terminated by Groningen.
A bundle of the experimental args and anything else the injection script needs to do its jobs
the experimental args themselves
the backpointer back to the instance that is controlling the subjects.
list of all command line args that Groningen is actively tuning which can be used to produce of list of args in the default set that Groningen is not tuning
Representation of fitness score.
Used in:
The name of the fitness score.
The assigned value of the fitness score.
The coefficient for the score.
Used in:
The basename of the subjects log file that Groningen will parse as input
time in minutes that the experiments run in production
experimental subject restart threshold used by the Executor and Validator
Weight of the latency score within the hypothesizer
Weight of the throughput score within the hypothesizer
Weight of the memory score within the hypothesizer
Number cross-over points for mating within hypothesizer
Mutation probability for the offsprings
Number of stagnant generations before GA terminates. The value 0 disables this termination condition check.
Number of elite individuals in the populations for the IncrementalEvolutionEngine NOTE: is not updated after the initial pass through the loop.
The percentile used to compute the latency score (A value from 0 to 100)
The number of threads that the Executor uses to monitor experimental subjects. Quite likely, you'll want to increase this as you increase the total number of subjects in your experiment. Less threads probably implies alonger period of time between sucessive probes of a given experimental subject.
How long we wait for a health check check
How long we sleep between health checks.
The type of server that is supposed to be registered at the recipient end.
The default deadline in seconds for metric queries.
The default channel TTL in seconds for metric query channel.
The maximum number of times the metric query pipeline will attempt to query.
The initial delay in seconds between retries for metric query failures.
Deadline (ms) of how long to wait for a subject to restart.
Interval (ms) we wait between an iteration of polling subjects
The number of extractor threads.
Maximum number of subjects to restart at once.
The deadline (ms) for subject manipulation to occur.
File that contains the last experiment.
The maximum TTL in seconds for objects in the memory-sensitive caches.
Divisor for max subjects in-flight for rolling subject group restart. (maxInFlight = # subjects / this divisor)
The number of times to shuffle the subjects.
The number of subjects to display in Groningen's HUD.
The path along with base string prefix for the Groningen event log.
The quantity in bytes that the Groningen event log may grow before being rotated.
The number of seconds that may transpire between Groningen event log flushing.
Additional paths where executable permissions will be set when running experiments.
Request specific pipeline ID, otherwise it will be auto generated.
Groningen can run with various amounts of interaction between pipeline steps This value is only read on creation of the pipeline (and not updated between iterations
Used in:
No synchronization is performed. Groningen will run the subjects for the duration specified in param_block, and on completion of an iteration of the pipeline, will immediately go into another iteration
Provides two points of synchronization: - A point at the beginning of an iteration through the pipeline, Groningen waits before the Hypothesizer is run and blocks the rpc until the experimental settings have been generated and the subjects have been restarted in order to incorporate the experimental settings - Another point that signals the experiment's duration is complete and blocks until all gc logs have been retrieved from remote systems, which would allow the experimental subjects to be downed. The duration setting above becomes a hard limit to prevent Groningen from waiting forever should the external agent crash or otherwise fail to signal the end of the experiment.
Provides a single point of synchronization at the end of an iteration at which the pipeline will pause a flag is set allowing it to continue. The flag can be set before the pipeline reaches the sync point.
Representation of Groningen-managed JVM flags.
Used in:
The name of the flag.
The flag's value.
Whether this flag was explicitly set by Groningen or was inherited from subject.
Overall configuration message definition While many fields are defined as optional in order to allow default values to be specified at the appropriate level (and no base default defined if such a value is not necessary), many must be defined at some level in the message hierachary as is noted below.
Used in: , ,
list of cluster config - must not be
empty
highest level default user defintion
allow restricting the argument search space at the top level
the parameter structure that will be passed around. Abstracted out to allow easy addition of new variables without changing java interfaces
Restrict the experiment to the first N subjects (0 to N-1) Default value of 0 implies all subjects in a group are under Groningens's control
The maximum number of seconds that an experimental subject is allowed to _not_ return OK. This time is added to the experiment duration so that subjects are allowed to warmup.
Definition for Cluster Configuration. This sets values for anything within a cluster which will act as defaults for any inner scoped message. Values that appears within inner messages will override values scoped in outer messages.
Used in:
cluster name - must be specified
somewhat optional - must be
specified somewhere in the hierarchy
Restrict the experiment to the first N subjects (0 to N-1) Default value of 0 implies all subjects in a group are under Groningens's control
The maximum number of seconds that an experimental subject is allowed to _not_ return OK on health probes when running an experiment. Health checking is performed on subjects that are erroring during routine inspections as well as at the beginning of an experiment following the point when all of the subjects are restarted in the Executor stage.
The number of subjects with default settings. These default subjects are scored concurrently with modified subjects in the experiment, but are otherwise untouched by tuning pipeline stages such as the Hypothesizer, Generator and Validator. Using default subjects reduces the number of subjects available for experimentation, however using default subjects provides a way to directly compare the performance of modified settings with unmodified settings. The number of default subjects should not exceed the total number of subjects in the experiment.
Subject Group scoped values
Used in:
Groningen will use all subjects in a group regardless of the number of subjects specified (requiring groups to split app under test to a different subject group) Any under specified subject will have values chosen from random.
subject group name must be
specified in order to attach to a set of subjects within it.
somewhat optional - must be
specified somewhere in the hierarchy
Experiments settings used by jvm_arg_injector for this group will be stored in this directory. There will be one file for every subject with the full path looking like this: <exp_settings_files_dir>/<subject index>
Restrict the experiment to the first N subject (0 to N-1) Default value of 0 implies all subjects in a subject group are under Groningen's control.
The maximum number of seconds that an experimental subject is allowed to _not_ return OK.
The command that should be used to restart this subject group. Overrides the default cluster implementation command.
The number of subjects with default settings. These default subjects are scored concurrently with modified subjects in the experiment, but are otherwise untouched by tuning pipeline stages such as the Hypothesizer, Generator and Validator. Using default subjects reduces the number of subjects available for experimentation, however using default subjects provides a way to directly compare the performance of modified settings with unmodified settings. The number of default subjects should not exceed the total number of subjects in the experiment.
Subject-specific values
Used in:
optional subject index for the group
At the subject level, you must define the all arguments if field is included
Used in:
The search space can be manipulated in two ways: - it can be restricted by pinning argument values to a value or a range on a per argument basis - a set of mutations can be fully specified to use as seed points for exploring the space. What follows is a uniform structure for describing both.
Used in: ,
At some point in the future, these should be migrated to generic MessageSet based arguments which would be completely extensible. This was not done in mach 1 as most of the commandline abstraction is already built around the CommandLineArg abstraction - redesigning this would likely not allow us to finish the prototype within the task force. The generic MessageSet can be phased in later - either as an additional to existing arguments, or as a complete replacement. NOTE: these fields do not follow the same numbering scheme as the rest of the file as we expect to burn the range.
this is a series so that multiple modes
can be searched over, though they are mutually exclusive on a given cmd line
The GC modes are mutally exclusive, so capture that fact in an enum
Used in:
Hold a specific value or a range of int64s. not following the interaction specified below will result in exceptions... This model was chosen to reduce overall space per subject should one need to specify 100+ subjects (though it would have helped to reduce the size of the arg names as well) with regard to underlying storage limitations.
Used in:
Specific value to use - mutually
exclusive to those below
lower bound (inclusive) for
range - msg must include ceiling and not value field
upper bound (inclusive) for
range - msg must include floor and not value field
Step size by which the Hypothesizer
The UniqueSubjectIdentifier and UniqueExperimentIdentifier messages below are not used internally in Groningen but rather by our Sawzall event logging processing pipeline. The had originally been defined as ad hoc tuples in the Sawzall script; but because they will be useful for ex post facto data collation and analysis, they have been defined here for anyone to use. Within the context of the Sawzall script, they are used for fingerprinting to generate globally unique identifiers across our data sets.