Optimizing a sample Linux system
In this study, Akamas is tasked with the optimization of Linux1, a Linux-based system (Ubuntu). The study's goal is to maximize the throughput of the computations of the Sysbench CPU benchmark.
Sysbench is a suite of benchmarks for CPU, file system, memory, threads, etc… typically used for testing the performance of databases.
System1 comes with a Node Exporter that collects system metrics that Akamas consumes through a Prometheus provider. Concerning Sysbench metrics, The study uses the CSV provider to make them available to Akamas.
The study uses Sysbench to execute a performance test against System1.
Telemetry
Setup a Prometheus and a Node Exporter to monitor the System
Install the Prometheus provider
Create a provider instance:
provider: "Prometheus"
config:
address: "linux1" # address of the Prometheus of system1
port: 9090 # port of the Prometheus of system1
component: "linux1-linux"4. Install the CSV File provider.
5. Create a provider instance:
provider: "CSV"
config:
address: "linux1"
authType: "password"
username: "ubuntu"
auth: "[INSERT PASSWORD HERE]"
protocol: scp
remoteFilePattern: "/home/ubuntu/benchmark_log.csv" # the remote path of the csv with the metrics of the benchmark
componentColumn: "component" # which column of the csv should contain the name of the component
csvFormat: "horizontal"
metrics:
- metric: "throughput"
datasourceMetric: "events_per_second"Workflow
The study uses a four-task workflow to test System1 with a new configuration:
Task Configure OS, which leverages the LinuxConfigurator operator to apply a new set of Linux configuration parameters
Task Start benchmark, which leverages the Executor operator to launch the benchmark
The following YAML file represents the complete workflow definition:
System
Within Akamas, System1 is modeled by a system of two components:
system1-linux, which represents the actual Linux system with its metrics and parameters and is of type Ubuntu 16.04
system1-bench, which represents the Sysbench with its metrics and is of type Sysbench
The following YAML file represents the definition of the Sysbench component type:
Study
Goal: minimize the throughput of the benchmark
Windowing: take the default (compute the score for the entire duration of a trial)
Parameters selection: select only CPU scheduling parameters
Metrics selection: select only the throughput of the benchmark
Trials: 3
Steps: one baseline and one optimize
The following YAML file represents the definition of the study:
Last updated
Was this helpful?