Skip to content


The below describes the required steps to get started with using Concertio Optimizer Studio software.
While Optimizer Studio can run under any modern Linux distribution, the directions below have been tested on Ubuntu 16.04, Ubuntu 14.04, CentOS 6 and CentOS 7.


For a brief description of available command line parameters, issue:

$ optimizer-studio

Concertio Optimizer Studio, version 1.18 (build time: Jan 16 2019, 20:00:00)
AI-Powered performance optimization tools
License information: EVALUATION (not intended for on-going commercial use) valid until: October 02, 2018

Online documentation is available at 

Usage: optimizer-studio [OPTION] [OPTION] ... <workload> [workload args]
       optimizer-studio [OPTION] [OPTION] ...

Command line options:
  --sampling-mode=MODE    Select sampling mode. MODE may be either [sync], async:
                          sync   - sampling is synchronized with workload execution
                          async  - periodic sampling with constant intervals
  --settings=PATH         Path to settings YAML file. By default settings.yaml
  --knobs=PATH            Path to configuration YAML files. When no configuration file(s)
                          have been provided, the embedded configurations are used.
                          Each file specified on a command line may override
                          settings defined in a previous configuration file
  --knobs=embedded        Load embedded configuration file, even though other configuration file(s)
                          has been specified
  --retain                Retain optimization data from previous Optimizer Studio run
  --workload-timeout=N    Maximum time allowed for a single workload run, after which it is killed
                          The format for N: AhBmCs, for hours, minutes and seconds
  --max-minutes=N         Maximum optimization time. If not specified, the optimization process
                          ends according to internal logic
  --testknob=KNOB-NAME    Run testing procedure for a knob identified by KNOB-NAME and exit
  --testknob=all          Run testing procedure for all knobs and exit
  --settings-script=PATH  The name of generated script that applies the optimal settings discovered
                          throughout the run. If not specified, the name is defined automatically
  --report=status         Output a status report of already running Optimizer Studio session. Should
                          be run from another terminal session
  --session=SESSIONID     An Optimizer Studio session ID, in case there are several sessions running
                          simultaneously. SESSIONID is printed out on the terminal at the beginning
  --help                  Display this help message


In order to optimize a workload, provide a workload script as a parameter, as follows:

$ sudo optimizer-studio ./my_workload
Concertio Optimizer Studio version 1.3
Optimizing ./my_workload
Optimization target: duration
Starting runtime (no time limit) ...
Optimization time: 00:06:23
Progress: 100%
Best known knob settings so far:
vm.swappiness: 60
sys.vm.overcommit_ratio: 40
Settings written to:

In this example, the script my_workload is optimized by Optimizer Studio. Since no configuration file is specified, Optimizer Studio defaults to optimizing CPU and OS knobs. Optimizing these knobs requires root access, so this is why Optimizer Studio is run using sudo.

There are two main ways to use Optimizer Studio to optimize a workload:

  • Synchronous Sampling (Optimizing Full Workloads) - This is the default optimization mode. Optimizer Studio will run the workload until completion several times and will attempt to minimize its runtime or maximize its reported metric using different system settings. This method is appropriate for complex workloads.
  • Asynchronous Sampling (Optimizing Specific Metrics) - By specifying --sampling-mode=async, Optimizer Studio will identify phases of execution of a workload and explore the best settings for each phase. This method is appropriate for simpler or synthetic workloads, where early feedback of application performance can be used to run many more experiments.

The specifics of the optimization method can be controlled using the configuration files.

Workload Settings

Optimizer Studio is responsible for running the workload provided by workload script. There are several command line parameters that control the way Optimizer Studio runs the workload:

--max-minutes. The maximum optimization time can be limited by this parameter. If it's not specified or is zero, Optimizer Studio will terminate the optimization process according to its estimations.
--settings-script. After optimization, Optimizer Studio outputs the discovered optimal settings and the baseline settings to this file, which can run as a script.

Running workloads as a non-root user while optimizing OS/CPU knobs

Optimizer Studio requires root access when optimizing OS and CPU knobs. It is possible to run the workload as the current user using su as in the following example:

$ sudo optimizer-studio su - $USER -c "./"

Running Long Workloads

Status Report

During optimization session, Optimizer Studio prints out a short line about its progress. If a user wants to get more detailed information about optimization session status, they can open another terminal session and run the following command:

$ optimizer-studio --report=status

In case that more than one optimization session run at the same time on the same computer, an additional --session command line parameter can be used:

$ optimizer-studio --report=status --session=<SESSION_ID>

where the session ID value is output to the terminal at the beginning of the optimizer session

Workload Timeout

Sometimes, a workload script can run too long time or even indefinitely. In such cases a user might want to limit a single workload run time with the --workload-timeout command parameter. In case that workload script runs more than the allowed time, Optimizer studio will kill it using SIGKILL signal, and the corresponding knob settings will be invalidated.
The format for time specification is AhBmCs where A, B, C specify correspondingly hours, minutes and seconds. For example:

$ optimizer-studio --knobs=<my_knobs.yaml> --workload-timeout=5m ./

Configuring Knobs

Optimizer Studio can optimize user-defined knobs by providing a configuration file. This is explained in the Configuration section.

Retaining Optimization Data

Optimizer Studio stores the optimization data in /root/.concertio/ By default, upon invocation of Optimizer Studio, this file is removed. In order to retain the data from the previous run, the --retain command line parameter can be used:

$ sudo optimizer-studio --retain ./my_workload

Using the optimization results

Optimizer studio stores the results of the optimization in a script, as configured in settings.yaml. This script can be used to apply the discovered results:

$ sudo ./ tuned
Concertio Optimizer Studio version 1.0, build date 2018-01-24
Loading optimized settings for ./my_workload
Created on: 2018-01-25 23:23:12
Applying tuned settings

To revert to baseline, use:

$ sudo ./ baseline
Concertio Optimizer Studio version 1.0, build date 2018-01-24
Loading optimized settings for ./my_workload
Created on: 2018-01-25 23:23:12
Applying baseline settings