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 https://www.concertio.com/docs/ 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: optimizer_studio_settings.sh
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.
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 "./workload.sh"
Running Long Workloads¶
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
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 ./my_workload.sh
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/opt.data. 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 ./optimizer_studio_settings.sh 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 ./optimizer_studio_settings.sh 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 ...