Skip to content

Change Log

v3.26.0 (2023-11-30)

  • Add embedded knobs for gcc-13.1
  • Enable selecting output format (text/json/yaml) in most optimizer-ctl commands
  • Multiple bug fixes and stability enhancements

v3.25.0 (2023-09-19)

  • Enable running multiple Studio instances at once. Resource sharing still needs to be avoided
  • Retire optimizer-studio command line tool, use optimizer-ctl instead
  • Introduce optimizer-ctl list to list the existing experiments
  • Introduce optimizer-ctl remove to remove an existing experiment
  • Introduce config. completion status in the CSV report
  • Move Refinement stage configuration to stages section of the knob file
  • Retire EXPERIMENT_ID env. variable, use command line switch instead
  • Fix parallel worker crashing on start-up
  • Multiple bug fixes and stability enhancements

v3.24.0 (2023-06-04)

  • Report current Action to Conductor
  • Support Debian 11 (Bullseye) packages
  • Retire Ubuntu 18.04 packages
  • Update PVTC metric sampling plugin
  • Update some dependency libraries
  • Update Mysql embedded knobs, update the examples accordingly
  • Enhance licensing on CentOS7 on Arm64
  • Enhance licensing of worker instances in parallel mode
  • Enhance shutdown sequence that could previously lead to indefinite wait
  • Multiple bug fixes and stability enhancements

v3.23.0 (2023-01-18)

  • Generate a dedicated data directory per experiment
  • Support Synopsys Common Licensing
  • Introduce testknob NAME optimizer-ctl action
  • Properly set POSIX exit code when optimizer-ctl encounters an error
  • Add embedded knobs for gcc-12.2
  • Update examples to reflect the new recommended Studio CLI
  • Report optional knob test failure on the console of optimizer-ctl init or run
  • Fix occasional failure to report status
  • Multiple bug fixes and stability enhancements

v3.22.0 (2022-11-30)

  • Allow optimization stage detailed configuration in the knob file
  • Retire --max-minutes command line parameter
  • Streamline sysinfo formatting reported to Conductor
  • Retire obsolete data fields in CSV file generation
  • Update and introduce new examples: postgresql, python, iozone
  • Improve error reporting in optimizer-ctl
  • Support different output formats in optimizer-ctl status
  • Multiple bug fixes and stability enhancements

v3.21.0 (2022-10-02)

  • Enhance and clarify error messages
  • Report metrics list along with the inventory
  • In parallel mode suspend workers when idle
  • In parallel mode report worker ID in the CSV file
  • Introduce global_settings:exit_timeout - Optimizer must complete shutdown procedure (60s by default)
  • Update examples
  • Update PVTC sampling plugin to use the latest library
  • Bug fixes and stability enhancements

v3.20.0 (2022-07-27)

  • Introduce experimental async invocation mode (optimizer-ctl run)
  • Verify target metric definition correctness prior to sampling
  • Introduce Synopsys PVTC based sampling plugin (
  • Changes to knob set policy: a normal knob can be set always, enable 1-option knobs
  • Enable exporting metrics via OpenTelemetry
  • Upgrade NATS server version
  • Bug fixes and stability enhancements

v3.19.0 (2022-06-14)

  • Introduce Ubuntu jammy (22.04) packages
  • Retire Ubuntu xenial (16.04) packages
  • Refresh parallel workload examples to reflect recent workload features
  • statsd server can now be defined in knobs.yaml definition file
  • Introduce statsd port settings with server setting
  • statsd now reports all metrics collected by optimizer
  • Bug fixes and stability enhancements

v3.18.0 (2022-04-20)

  • Introduce Linux perf based sampling plugin (
  • Introduce relocatable RPM - experimental for CentOS-7
  • Upgrade build infrastructure
  • Examples: introduce (GPU) CUDA kernels optimization
  • Bug fixes and stability enhancements

v3.17.0 (2022-03-22)

  • Knobs: enhance option range with math expression
  • Optimizer-ctl: introduce action queueing
  • Examples: update examples with the recent features
  • Bug fixes and stability enhancements

v3.16.1 (2022-02-22)

  • Replay CSV: enable backward compatibility with Web Service generated file
  • Switch to Protobuf for internal communications

v3.16.0 (2022-02-16)

  • Introduce workload abort condition
  • Enhance the replay command with higher precision
  • Retire deprecated workload_settings section from a knob file
  • Numerous bug fixes and stability enhancements

v3.15.1 (2022-02-02)

  • Replace CentOS 8 package with RockyLinux 8 package, as CentOS 8 has reached EOL
  • Add an optimization example for RISCV
  • Retire 'max_samples' param. in stages definition
  • Fix a bug in replay command
  • Fix a bug in timeout format parsing
  • Experimentally switch to using Protobuf for internal communications

v3.15.0 (2022-01-24)

  • Optimizer-ctl: introduce 'refine' command (applicable to any configuration)
  • Parallel mode: improve scalability by aborting excessive jobs
  • Fix Studio progress display. In particular, display progress of the current action in the Idle mode.
  • Numerous bug fixes and stability enhancements

v3.14.0 (2021-12-27)

  • Optimizer-ctl: introduce 'analyze' command
  • Optimizer-ctl: introduce 'sample' command
  • Optimizer Studio: introduce 'idle' stage to handle optimizer-ctl requests
  • Switch to invalid search only from the optimization stage
  • Stages: avoid excessive samples in validation stage
  • Stop tolerating non-existent files in attachements section
  • Numerous bug fixes and stability enhancements

v3.13.0 (2021-11-30)

  • Support file attachement in workload definition
  • Notify user about new Optimizer Studio version availability
  • Export all the metrics (including the disabled ones)
  • Update embedded compiler flags examples
  • Decrease the volume of web-client log messages
  • Parallel mode: assert knob file identity on every worker
  • Parallel mode: report worker status via optimizer-ctl
  • Stages: validation stage definition in the knob file is optional
  • Numerous bug fixes and stability enhancements

v3.12.0 (2021-10-25)

  • Completely revised parallel optimization mode compatible with normal workload definition
  • Optimizer-ctl: introduce 'apply_config' command
  • Optimizer-ctl: enhance error handling
  • Introduce a SPEC AOCC example
  • Introduce 3 new accelerator examples
  • Support 3 new accelerator knobs
  • Do not require options in an overridden knob
  • Numerous bug fixes and stability enhancements

v3.11.0 (2021-09-23)

  • Embedded knobs: introduce additional LLVM compiler flags
  • Support relocatable installation directory. Optimizer Studio can be moved to an alternative location
  • Retire async sampling mode
  • Fix rare Validation stage failure

v3.10.0 (2021-09-07)

  • Embedded knobs: enhance LLVM compiler flags (Clang-13). Fixed functionality for initial mllvm flag as well as adding more mllvm flags
  • Update licensing and other 3rd-party dependencies

v3.9.0 (2021-08-30)

  • Embedded knobs: introduce up-to-date LLVM compiler flags (Clang-13)
  • Workload definition: enable getting multiple knobs via {{}} template
  • Improve Knob Refinement algorithm
  • Revisit Knob Refinement configuration params: refinement_std_tolerance, refinement_improv_tolerance
  • Introduce new accelerator knobs: uname, exec, stat
  • Fix inability to test a single knob
  • Fix security vulnerabilities
  • Numerous bug fixes and stability enhancements

v3.8.1 (2021-08-05)

  • Hot fix default stage list incompatibility with the community license
  • Improved testing coverage

v3.8.0 (2021-08-01)

  • Introduce optimizer-ctl set_baseline command allowing to set any configuration as next experiment baseline
  • Update parallel mode syntax definition
  • Update parallel mode examples
  • Fix bug in Community license
  • Additional bug fixes and stability enhancements

v3.7.0 (2021-07-22)

  • Introduce support for Arm and x64 CPU based architectures enriched inventory for Conductor auditing view
  • Introduce more robust INI parser for mysql embedded knobs
  • Bug and stability fixes

v3.6.0 (2021-07-08)

  • Introduce advanced functionality for declarative workload definition. More details here
  • Bug and stability fixes

v3.5.0 (2021-06-7)

  • Introduce async, accelerate and other enhanced features for declarative workload definition
  • sum_a_b_c_async example added for advanced async mode use case demonstration
  • Bug and stability fixes

v3.4.1 (2021-05-19)

  • Hot patch for workload timeout feature
  • Hot patch for optimizer crash in retain mode during validation stage

v3.4.0 (2021-05-14)

  • Introduce declarative workload settings in experiment definition (knobs.yaml). More information can be found at configuration documentation
  • Update many experiment examples with new declarative workload syntax
  • Bug and stability fixes

v3.3.1 (2021-04-30)

  • Hot patch for out_directory global setting in root user mode
  • Hot patch to Mysql sysbench example
  • Additional examples improvement

v3.3.0 (2021-04-28)

  • Introduce Mysql 8 embedded knobs with updated sysbench example
  • Improve various examples, demonstrating new features such as stages, custom inventory and posting sample meta data
  • Introduce exclude_error Boolean option for finer control over invalid search mechanism, to pass on searching in case of workload errors such as timeouts
  • Bug and stability fixes

v3.2.1 (2021-04-19)

  • Hot patch for supporting Arm platforms.
  • Hot patch for avoiding local optimizer timeout issues.

v3.2.0 (2021-04-08)

  • Introduce "expression" target metric. It is now possible to express target metric as a function of other metrics, using inja templates
  • Prometheus sampling plugin: enable adding recent sample duration to the query definition
  • Sampling plugins: improve user interface and error reporting
  • Introduce Accelerator metrics. It is now possible for Optimizer to retrieve metrics from accelerated programs. Currently supported metric: duration
  • Optimizer studio log respects out_directory global settings parameter
  • Invalid search is now invoked only for compiler flag mining by default
  • Bug and stability fixes

v3.1.1 (2021-03-09)

  • Hot fix for accelerate liblog packaging bug
  • Bug and stability fixes

v3.1.0 (2021-03-01)

  • Introduce Automatic Invalid knob configuration management - information about invalid configurations found during an experiment can be reused in subsequent experiments
  • Add --replay-mode parameter to control samples replayed from a CSV (valid, invalid, all, default: valid)
  • Introduce logger accelerator. Using a simple knob definition, application logging can be accelerated
  • Introduce accelerator filters. Using a simple knob filter definition, it is possible to control which processes will be affected by an accelerator
  • Upload console log to Experiment Management System at the end of experiment
  • Bug and stability fixes

v3.0.1 (2021-02-10)

  • Hot patch for optimizer-ctl download_project command

v3.0.0 (2021-02-09)

  • Introduce Experiment Management System Walkthough Wizard support. It is now a lot easier to create knobs.yaml definition from EMS and download the project files, including auto-generated script to run the experiment locally, using optimizer-ctl download_project command
  • Introduce "rational" target metric. it is now possible to define a target metric that represents a ratio of two other metrics
  • Introduce accelerate application with arguments injected knobs
  • Introduce accelerate application with environment variable injected knobs
  • Introduce accelerate application by caching excessive system calls
  • Bug and stability fixes

v2.23.0 (2021-02-01)

  • Improve invalidation mechanism during optimization stage
  • Introduce application memory allocation acceleration libraries
  • Introduce knob policies: always, set-once, on-change (default), in order to support acceleration libraries
  • Introduce optimizer-ctl command, tranforming optimizer-studio acceleration knob recommendations into optimizer-runtime configuration
  • Bug and stability fixes

v2.22.0 (2021-01-11)

  • Add application accelerator - new functionality to speed up applications using acceleration libraries
  • Implement "net.throughput". An embedded target metric to measure generic network throughput
  • Bug and stability fixes

v2.21.0 (2020-12-07)

  • Report knob configuration status to Experiment Management System (active, complete, etc.) and display in GUI
  • Improve display for Welch t-test validation test report
  • Bug and stability fixes

v2.20.0 (2020-11-30)

  • Introduce additional embedded knobs for CPU tuning
  • Add a column with point estimator values to metrics.csv
  • Fix problems with using percentile as a point estimator
  • Bug and stability fixes

v2.19.0 (2020-11-22)

  • Update JVM example to use more stable benchmark als->scala-stm-bench7
  • Embedded Linux OS knobs: add transparent huge page knob
  • Add embedded ZFS knobs
  • Optimizer Studio now prints out reports of Readiness and Validation stages on console
  • It is possible to download CSV file with samples from Web Service and replay in Optimizer Studio
  • Stop supporting CentOS 6, as it reaches its End Of Life
  • Bug and stability fixes

v2.18.1 (2020-11-01)

  • Introduce embedded knobs for optimization of run time library jemalloc and a corresponding example
  • Fix startup failure on slow networks

v2.18.0 (2020-10-27)

  • Add example of using BlazeMeter for optimizing Nginx
  • Add example of optimizing Intel compiler (icc) flags
  • Add Dynatrace metrics plugin
  • Add Datadog metrics plugin and optimization example
  • Implement Welch t-test during Validation stage
  • Improve the stability of the communication with Web Service, make it more resilient to errors
  • Rename optimizer-studio-license utility to optimizer-license
  • Bug and stability fixes

v2.17.0 (2020-10-04)

  • New command line flag --debug-workload allows verbose output when running first iterations of a workload script in order to understand the interaction with the Optimizer Studio
  • Bug fix: if an experiment is restored with --retain parameter, if the readiness stage was the last active one, it continues from the point it's stopped
  • Bug and stability fixes

v2.16.0 (2020-09-14)

  • Connection to Experiment Management System - make use of https_proxy/ http_proxy environment variables and apply proxy settings automatically
  • Support user defined experiment inventory data and add a corresponding example
  • Connection to Experiment Management System - support OPTIMIZER_STUDIO_WEB_TOKEN environment variable in addition to the corresponding global parameter setting
  • Optimizer Studio log files are now created along existing optimizer engine log files
  • Add support for Python interpreter optimization (cpython) and optimization example
  • Optimizer Studio examples were updated to make use of a new File Metrics Plugin and simplify knob file configuration
  • Bug and stability fixes

v2.15.1 (2020-09-01)

  • Bug fix: increase http_buffer_size default to be able to pass larger samples to Experiment Management System

v2.15.0 (2020-08-31)

  • Settings script, created as a result of optimization session, is uploaded to Experiment Management System
  • Send experiment metadata to Experiment Management System
  • Send computer inventory list to Experiment Management System
  • Support adding metadata for each sample
  • Added metrics plugin and example for New Relic APM
  • Embedded_jvm example has been updated to the latest version 0.11 of the Renaissance Benchmark Suite

  • Bug and stability fixes

v2.14.0 (2020-08-14)

  • Introduce optimizer-ctl utility - login to SaaS service, create project etc, directly from CLI
  • Introduce embedded knobs for Intel C/C++ compiler (icc)
  • Global settings parameters can include now environment variables
  • File metrics plugin: check for metrics file really updated by the workload script
  • Bug fix: knob values loaded during replaying of a CSV file, shall be considered as valid
  • Bug and stability fixes

v2.13.0 (2020-07-22)

  • Optimizer Studio Stages defined: Readiness, Optimization, Refinement, Validation, using command line parameter --stages. Deprecate command line parameters --no-refine and --refine-only; the same functionality is avaliable in Refinement stage.
  • Added support for SolarFlare Onload NIC embedded knobs
  • Added a_plus_b_wsl example for running in Windows Subsystem for Linux (WSL)
  • Added metrics plugin for Prometheus server
  • Added support of json metric results in file metrics plugin
  • Modify some global parameters specifying time duration to use time units. Old parameters are deprecated
  • Bug and stability fixes

v2.12.0 (2020-06-28)

  • Support additional embedded knobs for gcc 10 - vectorization and inlining
  • Added embedded knobs for optimization of Golang garbage collection performance
  • Added examples for optimization of Golang garbage collection parameters
  • Improved error diagnostic messages in many cases
  • Support licensing on Ubuntu 18.04 and Ubuntu 20.04 on ARM64 platform
  • Move metric plugin shared libraries into plugins subdirectory and rename some libraries
  • Load required plugins automatically according to a metric name
  • Knob files: deprecate usage of 'options_script' tag, in favor of 'options/script' definition
  • Minor fixes and improvements in conectivity with Experiment Management System
  • Other bug and stability fixes

v2.11.0 (2020-06-02)

  • Improve connectivity features with Experiment Management Service
  • Add support for Community license. Community license is now default one if a user has no other license
  • Update JVM embedded knobs and usage examples - improve robustness
  • Update NGINX embedded knobs and usage examples - better support of default settings
  • Bug and stability fixes

v2.10.2 (2020-05-19)

  • Added example of gcc compilation flag mining in concurrent optimization mode
  • Bug and stability fixes

v2.10.1 (2020-05-14)

  • Bug and stability fixes

v2.10.0 (2020-05-11)

  • Optimizer Studio connects to new Experiment Management Service
  • Add support for Ubuntu 20.04 on x86_64 and arm64 platforms
  • Add support for Ubuntu 18.04 on arm64 (x86_64 has been already supported)
  • Stop supporting Ubuntu 14.04
  • optimizer-studio is now a binary executable rather than bash script
  • Add file metrics plugin, which simplifies passing workload metrics via files
  • Modify a_plus_b and sum_a_b_c examples to use file metrics plugin
  • JVM embedded knobs: allow empty default knob values
  • JVM embedded knobs: improve some parameters to reduce too big number of options to test
  • Bug and stability fixes

v2.9.1 (2020-03-27)

  • Fix intermittent crash during saving of report.json

v2.9.0 (2020-03-23)

  • Add an example of SPEC CPU 2017 benchmark suite optimization using GCC knobs
  • Allow early stop of exploration of a knob configuration if it doesn't contribute to target metric improvement
  • Metrics.csv file format slightly changed: knob_settings column now stores knob configuration in JSON rather than non-standard text string
  • Bug and stability fixes

v2.8.0 (2020-03-16)

  • Introduce embedded knobs for LLVM compiler
  • Add examples of optimization of compilation with LLVM compiler
  • Improve JVM embedded knobs by adding boolean knobs
  • Add an example of SPEC CPU 2017 benchmark suite optimization
  • User can define an alternative baseline configuration
  • Bug and stability fixes

v2.7.0 (2020-02-27)

  • Introduce NGINX web server and proxy embedded knobs
  • Introduce NGINX optimization example
  • Introduce a Python workload example
  • Introduce replaceable target metric point estimation function (average, percentile, mode)
  • Bug and stability fixes

v2.6.0 (2020-01-31)

  • Knob Refinement functionality change - optimizer shall now run two-phase refinement automatically instead of choosing a strategy (logarithmic then one-by-one)
  • Introduce basic StatsD protocol support. By adding statsd_server: <ip> to settings.yaml, optimizer will attempt pushing target metric to statsd server if available.
  • Improve knob name and options validation
  • Improve recovery in rare cases of abnormal crashes
  • Retire support for SLES 11 SP4, as it is EOL in March.2020
  • Bug and stability fixes

v2.5.0 (2019-12-30)

  • Introduce Knob Refinement functionality - a post processing that allows to clean up insignificant changes from the best knob configuration
  • Introduce Seed Knob Configurations functionality that allows to reuse the results of one optimization experiment to speed up another one by providing a better starting point
  • Testing all knobs is performed now prior to running optimization
  • Add more embedded network optimization knobs
  • Add Redis embedded knobs
  • Add Redis optimization example
  • Support for SLES 11 SP4 has been retired, as SLES 11 SP4 is EOL in March.2020
  • Bug and stability fixes

v2.4.0 (2019-12-12)

  • Introduce "Replay metrics.csv" functionality
  • Allow default file names for knobs file (knobs.yaml) and workload script (
  • Add option to the result setting script to get knob values as Bash array variable
  • Add '--show' option to the optimizer-studio-license tool to show information about the license
  • Add embedded knobs for JVM engine - from version 8 and above
  • Add example of JVM optimization
  • Minor changes in CSV format: replace start and end time fields with a single epoch time timestamp to simplify integration with metric collection tools.
  • Minor format change in console output. Baseline knob values are marked, if present in the best known settings:
   Best known knob settings so far:
   A: 8
   B: 8
   C: 8 [baseline]
  • Bug and stability fixes

v2.3.1 (2019-11-13)

  • Mellanox knobs: more robust error handling
  • "duration" metric is minimized by default
  • Improve wording of some options of Optimizer Studio Help and some error messages
  • Cancel usage of "-j" switch of jq utility thus allowing to use older versions of jq
  • Improve embedded gcc example to optimize the example application behavior rather than compilation time
  • Embedded gcc knobs: use "empty" as a default for all options, rather than the first value in the list
  • Other bug and stability fixes

v2.3.0 (2019-10-31)

  • Bug and stability fixes

v2.2.0 (2019-10-24)

  • Reorganize example folder names to group together related or similar examples
  • Changed defaults of parameters min_baseline_samples and min_samples_per_config for better fit to background noise
  • MySQL embedded knobs are now POSIX shell compliant. bash is no longer required
  • Minor fixes in PHP and Apache embedded knobs
  • Metrics.csv file: added new columns, reorganized order of columns
  • Bug and stability fixes

v2.1.1 (2019-09-24)

  • Bug and stability fixes

v2.1.0 (2019-09-19)

  • New Licensing mechanism implemented
  • Optimizer Studio will fail if one of scripts ends with an error
  • Bug and stability fixes

v2.0.2 (2019-09-10)

  • Added example of workload requiring system reboot when setting knob values
  • Bug fixes

v2.0.1 (2019-08-20)

  • Implemented %x and %X format specifiers for knob option format

v2.0 (2019-08-08)

  • Added a possibility to run workload on several nodes in parallel
  • Added support for optimization of Yarn, MapReduce and Spark Hadoop services
  • Added examples for optimization of Yarn, MapReduce and Spark Hadoop services
  • Added support for PHP7 optimization
  • Added support for optimization of Apache2 Web Server
  • Bug and stability fixes

v1.23 (2019-07-25)

  • Added support for HipHop Virtual Machine (HHVM) optimization
  • Added example of HipHop Virtual Machine (HHVM) optimization
  • Added global parameter max_samples_per_config
  • Added global parameter pending_config_timeout_minutes
  • Rename some global parameters:
Old name New name
min_samples_per_option min_samples_per_config
max_invalid_samples_per_option max_invalid_samples_per_config
max_option_mean_cv max_config_mean_cv
  • Bug and stability fixes

v1.22 (2019-05-13)

  • Added example of integration of Optimizer Studio with Apache JMeter load testing tool
  • Added support for OpenMPI optimization
  • Added example of optimization of OpenMPI parameters for GROMACS benchmark
  • Bug and stability fixes

v1.21 (2019-04-11)

  • Added support for MySQL optimization
  • Added MySQL optimization example
  • Fixed improvement percentage calculation for the case of target metric minimization
  • Bug and stability fixes

v1.20 (2019-02-21)

  • Enabled creation of CSV metrics files distinguishable by creation DATE
  • Enabled creation of CSV metrics files by default
  • Implemented tolerance for missing target metric values
  • Improved error handling
  • Improved logging messages

v1.19 (2019-02-10)

  • Enabled creation of CSV metrics files distinguishable by Optimizer Studio PID
  • Enabled fast-forwarding optimization progress to 100% when all the configurations are studied
  • Implemented sanity watchdog preventing Optimizer Studio from staying in memory after SSH session termination
  • Added Android/Geekbench optimization example
  • Added Mellanox NIC optimization example
  • Added PGBench optimization example
  • Added call to pre/post set script(s) in Mellanox NIC embedded knob file
  • Fixed bug in settings script generation, where pre/post set script(s) would not be called
  • Cleaned up logger output
  • Enhanced progress report format and testknob report
  • Enhanced error reporting by eliminating occasional wrong error messages

v1.18 (2019-01-16)

  • Added --report=status command line parameter for getting status report during long sessions
  • Added --session=SESSIONID command line parameter, specifying a certain session ID for a report
  • Added --workload-timeout command line parameter which allows killing too long workloads
  • Removed --warmup-minutes command line parameter as not useful one
  • Optimization progress line has been modified
  • Bug fixes and minor enhancements

v1.17 (2019-01-06)

  • Implemented experimental basic knob dependency functionality
  • Added baseline knobs display along with tuned knobs when calling the best settings script with --show tuned arguments
  • Enabled explicit maximizing/minimizing of workload target metric
  • Enhanced Optimizer Studio statistics display
  • Extended the list of examples provided along with Optimizer Studio
  • More bug fixes and minor enhancements

v1.16 (2018-12-06)

  • Added --show command line option to the best settings script. This option allows to display only knob configuration
  • Fixed missing license expiration message
  • Fixed network-related knobs definition
  • Fixed storage-related knobs definition
  • Fixed instability in ongoing improvement calculation
  • Fixed some example code
  • More bug fixes and minor enhancements

v1.15 (2018-10-17)

  • Added package for Ubuntu 18.04 (Bionic Beaver)
  • The Evolution optimization strategy is now the default. The Greedy strategy is still available and can be enabled by explicitly specifying it in the configuration settings
  • Added configuration settings for Evolution optimization strategy specifics
  • The number of explored options of a knob by the Greedy optimization strategy is now limited by the configuration parameter max_options_per_knob (default value: 12)
  • Added support for using device scripts with memory knobs
  • The embedded MSR knobs now use rdmsr/wrmsr from the default path instead of from /usr/sbin
  • More bug fixes and minor changes

v1.14 (2018-09-16)

  • Implemented support of knob option definition using numeric ranges
  • Added examples of optimizing MongoDB and Phoronix Redis benchmark
  • Bug fixes and minor changes

v1.13 (2018-08-22)

  • Evolution-based optimization algorithm implemented. Users can now select between the Greedy algorithm and the new Evolution optimization strategies.
  • Stricter YAML file validation implemented. Note that existing user configuration files might fail to load if they have illegal fields and values.
  • Added support for spaces in knob names and option values
  • Added support for empty knob option values
  • It's possible now to define a default value for a memory knob, which is used as its baseline. If not specified - the first value in the list of options is used
  • Several users can run Optimizer Studio in parallel
  • Added more examples
  • Bug fix: Optimization Studio behaves more stable during initialization, when initialization takes a certain time
  • Bug fix: Setting script created as a result of Optimization Studio run, can be now executed successfully if some knobs use functions or variables in their set scripts
  • Optimizer Studio now supports having only one baseline sample, down from 3

v1.12 (2018-08-03)

  • Optimizer Studio now can be run by non-privileged users. If the optimization project requires access to privileged system resources, then Optimizer Studio needs to be run as a root user
  • Improved validation of YAML files
  • Added support and example of usage of script-less knobs passed as array to workload script
  • Optimizer Studio now supports SuSE SLES 11 SP4

v1.11 (2018-07-23)

  • Added support for complex workload specification and multi-objective optimization via scalarization of the target metric
  • Anticipated improvement report now also includes the raw value of the target metric alongside the percentage improvement
  • Optimizer service now runs as a background application instead of as a system service
  • Added syntax validation for YAML files
  • Improved error reporting
  • Added studio-funcs.bash script for facilitating communications between user workload scripts and Optimizer Studio
  • Memory knobs are now also passed as an array to the workload scripts
  • Bug fix: Sometimes knob and metric information passed to the workload scripts were lost when many knobs and metrics were modified
  • Bug fix: Removed invalid samples that appeared at the end of the optimization
  • Various other bug fixes and minor improvements

v1.10 (2018-07-03)

  • If --max-minutes parameter has been specified, Optimizer Studio now will run until the specified time is over, continuously exploring new knob combinations
  • Bug fixes in stopping Optimizer Studio by Ctrl+C

v1.9 (2018-06-25)

  • New import capability to import configuration files, filter imported knobs by name
  • Support for onload and enable scripts per configuration file
  • Allow sourcing shell files in configuration files
  • Improved synchronization mechanism between the optimizer-studio script and the optimizer background process
  • Added support for running embedded knobs on remote devices
  • Allow specifying certain settings in the main knob configuration files
  • Bug fix: Values of script-less knobs are now reported in the console output
  • Bug fix: Comparison between different configurations is now calculated correctly when speedup is high

v1.8 (2018-06-12)

  • Added support for skipping configurations that yield more than max_invalid_samples_per_option invalid measurements
  • Added a settings parameter sum_cvs_coefficient that controls the threshold for selecting beneficial configurations
  • Space character is now allowed in command line parameters for parameters that previously required a '=' character. For example "--knobs ./my_knobs.yaml" will now work like "--knobs=./my_knobs.yaml"
  • When no include_metrics and exclude_metrics are defined, the default is now to include all metrics
  • Added an example folder containing one example of optimizing a sum of two integers using Optimizer Studio
  • Bug fix: Corrected calculation of improvement of configurations that resulted in choosing configurations with lower incremental benefit when the general target metric improvement was high
  • Bug fix: Optimizer Studio now works correctly in RHEL 7 and Ubuntu 14.04
  • Bug fix: When using script-less knobs, final settings script will now contain values for all knobs, even if they remain at baseline
  • Bug fix: Correct target metric is shown now at Optimizer Studio

v1.7 (2018-06-04)

  • Introduce script-less memory knobs whose values are passed to the workload script as environment variables
  • Report anticipated improvement during and at the end of the optimization run
  • Report the number of different configurations checked during optimization
  • More accurate optimization progress calculation for longer running workloads
  • Bug fix: Require fewer baseline samples at the beginning

v1.6 (2018-05-15)

  • Increase default maximum workload time from 10 min to 1 hour
  • Fix bug preventing Optimizer Studio to work on CentOS 7 in synchronous sampling mode
  • Report anticipated performance improvement
  • New knob: Symmetric Multithreading (SMT) is now supported in the embedded knobs

v1.5 (2018-05-03)

  • Fix bug causing Optimizer to hang indefinitely at the end of the run in some situations
  • Improved and more stable progress reporting
  • Change Ctrl+C processing - pressing 3 times Ctrl+C will abort the Studio immediately
  • Ctrl+C now can stop --testknob=all run
  • Create more detailed report of testknob function
  • Make possible to define user target metric when using embedded knobs
  • Fix bug causing wrong handling of parameters of a workload. Now parameters can be passed on optimizer-studio command line

v1.4 (2018-04-24)

  • Fix bug related to progress reporting in certain environments
  • Fix bug that resulted in redundant measurements
  • Use regular characters instead of UTF8 in progress reporting
  • Settings script is now created only when optimal settings are found
  • Slightly revised settings script
  • More descriptive help message

v1.3 (2018-04-17)

  • Introduce sampling-mode command line parameter
  • Fix bug in progress reporting
  • Shorten cleanup time on exit

v1.2 (2018-04-12)

  • Fix bug causing runtime crash at the end of optimization
  • Optimization can continue in case of failures causing optimization runtime restart
  • cpu.cache_prefetch knob will use only legal option values
  • Improve operation in virtual environments by preventing hardware specific sampling
  • --testknob=all is now a working option (bug fix)

v1.1 (2018-04-02)

  • Bug fix related to settings script creation
  • Bug fix related to distorted sampling values on Optimizer Studio exit

v1.0 (2018-03-29)

  • Initial version