Optimization studies are defined using a YAML manifest with the following structure:
system:1name:Optimizing the e-shop applicationgoal:objective:maximizefunction:formula:payments_per_secvariables:payments_per_sec:metric:eshop_paymentslabels:componentName:eshopworkflow:eshop_jmeter_teststeps: - name:baselinetype:baselinevalues:tomcat.maxThreads:1024jvm.maxHeap:2048jvm.garbageCollectorType:G1GCpostgres.shared_buffers:4096
with the following mandatory properties:
Some of these optional properties depend on whether the study is an offline or live optimization study.
Number of trials
It is possible to perform more than one trial per experiment in order to validate the score of a configuration under test, e.g. to take into account noisy environments.
The following fragment of the YAML definition of a study sets the number of trials to 3:
numberOfTrials:3
Notice: This is a global property of the study which can be overwritten for each step.
Trial aggregation
The trial aggregation policy defines how trial scores are aggregated to form experiment scores.
There are three different types of strategies to aggregate trial scores:
AVG: the score of an experiment is the average of the scores of its trials - this is the default
MIN: the score of an experiment is the minimum among the scores of its trials
MAX: the score of an experiment is the maximum among the scores of its trial
The following fragment of the YAML definition of a study sets the trial aggregation to MAX:
trialAggregation:MAX# other possible values are AVG, MIN
Examples
The following system refers to an offline optimization study for a system modeling an e-commerce service, where a windowing strategy is specified:
system:"bde4f259-9a51-4c67-87aa-3c5bc599c6b9"# id of the system to optimize with the actions defined in this studyworkflow:"eshop_jmeter_test"# name of the workflow to use to perform trialsname:Optimizing the e-shop application# name of the studygoal:# the performance goal to achieveobjective:"maximize"function:formula:"eshop.payments_per_second"windowing:# the temporal window in which to compute the score of a trialtype:"trim"trim: ["10s","0s"] # use the duration of the trial minus 0s from start and end to compute the score of the trialparametersSelection:"all"# use all available configuration parametersmetricsSelection:"all"# gather all metricssteps:# the steps to conduct to perform experiments and trials - name:"my_baseline"# do first a baseline with the provided configurationtype:"baseline"values:jvm.maxHeap:2048jvm.gcType:"-XX:+UseParallelGC" - name:my_optimization# then do 20 optimization experiments of 2 trials eachtype:optimizenumberOfExperiments:200numberOfTrials:2
The following offline study refers to a tuning initiative for a Cassandra-based system (ID 2)