Skip to content

AutoSLO

Policy Tuning

src/autoslo/entry_points/tune.py

Objective: Optimize an execution_config for a (maybe forecasted) workload.

Conceptual Inputs: - An initial execution_config living in data/execution_configs/*/ - A tuner config living in data/tuner_configs. - Values for certain parameters in these two files.

Concrete Inputs: One the command line, we have two options: - Provide the three inputs above separately. - Point to a tuning_manifest living in data/manifests/tuning/, a YAML file containing the above inputs.

Outputs: - An optimized execution_config, stored in data/execution_configs/tuned/. - Detailed intermediate outputs stored in data/tuner_runs/<TUNER_RUN_NAME>. The TUNER_RUN_NAME is deterministically derived from the inputs.

Execution

src/autoslo/entry_points/execute.py

Objective: Execute combinations of (workload, execution_config), either against the simulator or against live Redshift clusters.

Inputs: - An execution_manifest specifying the combinations to run, living in data/manifests/execution. - A flag for whether to run against the simulator or against live clusters.

Outputs if running against simulator: - A directory with simulation results for each combination, stored at data/simulator_runs/<workload_id>/<execution_config_id> (derived automatically from the specification of each combination)

Outputs if running against Redshift: - A directory with run results for each combination, stored at data/runs/<run_timestamp> (derived automatically), so that we never overwrite runs even if rerunning the same combination. - An updated metadata file at data/runs/map.yml, collecting tuples of ( <run_timestamp>, <workload_id>, <execution_config_id>).

Plotting

src/autoslo/entry_points/plot.py

Objective: Plot the SLO performance of different execution outputs (on the simulator or on live workload clusters)

Inputs: - A plotting_manifest specifying the points to plot, living in data/manifests/plotting/<plot_name>.yml. - A flag for whether to plot based on simulator runs or live cluster runs.

Outputs: - A plot living in data/plots/<plot_name>.png

Microbenchmarks

src/autoslo/entry_points/microbench.py

Objective: Run method-level efficiency microbenchmarks (routing, autoscaling, tuner-phase timing) using dedicated manifests.

Inputs: - The <name> of a microbench manifest under data/manifests/microbench/<name>.yml.

Example:

python src/autoslo/entry_points/microbench.py routing_efficiency

Outputs: - Experiment data at data/plot_data/<name>.csv - Plot at data/plots/<name>.png