diff --git a/execution/theodolite.py b/execution/theodolite.py index fbffed02f9de182d2015ab04a8d732271c21df3f..2f45bb4051ebfa91d1238b6ae09325943bba24b3 100755 --- a/execution/theodolite.py +++ b/execution/theodolite.py @@ -3,12 +3,13 @@ import sys import os from strategies.config import ExperimentConfig -import strategies.strategies.default_strategy as default_strategy -import strategies.strategies.step_strategy as step_strategy -import strategies.strategies.binary_search_strategy as binary_search_strategy +import strategies.strategies.domain_restriction.lower_bound_strategy as lower_bound_strategy +import strategies.strategies.domain_restriction.no_lower_bound_strategy as no_lower_bound_strategy +import strategies.strategies.search.check_all_strategy as check_all_strategy +import strategies.strategies.search.linear_search_strategy as linear_search_strategy +import strategies.strategies.search.binary_search_strategy as binary_search_strategy from strategies.experiment_execution import ExperimentExecutor import strategies.subexperiment_execution.subexperiment_executor as subexperiment_executor -import strategies.subexperiment_evaluation.noop_subexperiment_evaluator as noop_subexperiment_evaluator import strategies.subexperiment_evaluation.subexperiment_evaluator as subexperiment_evaluator uc=sys.argv[1] @@ -19,18 +20,110 @@ cpu_limit=sys.argv[5] if len(sys.argv) >= 6 and sys.argv[5] else "1000m" memory_limit=sys.argv[6] if len(sys.argv) >= 7 and sys.argv[6] else "4Gi" kafka_streams_commit_interval_ms=sys.argv[7] if len(sys.argv) >= 8 and sys.argv[7] else 100 execution_minutes=sys.argv[8] if len(sys.argv) >= 9 and sys.argv[8] else 5 -benchmark_strategy=sys.argv[9] if len(sys.argv) >= 10 and sys.argv[9] else "default" +domain_restriction=bool(sys.argv[9]) if len(sys.argv) >= 10 and sys.argv[9] == "restrict-domain" else False +search_strategy=sys.argv[10] if len(sys.argv) >= 11 and (sys.argv[10] == "linear-search" or sys.argv[10] == "binary-search") else "default" -print(f"Chosen benchmarking strategy: {benchmark_strategy}") +print(f"Domain restriction of search space activated: {domain_restriction}") +print(f"Chosen search strategy: {search_strategy}") -if benchmark_strategy == "step": - print(f"Going to execute at most {len(dim_values)+len(replicas)-1} subexperiments in total..") - experiment_config = ExperimentConfig(uc, dim_values, replicas, partitions, cpu_limit, memory_limit, kafka_streams_commit_interval_ms, execution_minutes, step_strategy, subexperiment_executor, subexperiment_evaluator) -elif benchmark_strategy == "binary-search": - experiment_config = ExperimentConfig(uc, dim_values, replicas, partitions, cpu_limit, memory_limit, kafka_streams_commit_interval_ms, execution_minutes, binary_search_strategy, subexperiment_executor, subexperiment_evaluator) +# use h3 +if domain_restriction: + # use h1 & h3 + if search_strategy == "linear-search": + print(f"Going to execute at most {len(dim_values)+len(replicas)-1} subexperiments in total..") + experiment_config = ExperimentConfig( + use_case=uc, + dim_values=dim_values, + replicass=replicas, + partitions=partitions, + cpu_limit=cpu_limit, + memory_limit=memory_limit, + kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, + execution_minutes=execution_minutes, + domain_restriction_strategy=lower_bound_strategy, + search_strategy=linear_search_strategy, + subexperiment_executor=subexperiment_executor, + subexperiment_evaluator=subexperiment_evaluator) + # use h2 & h3 + elif search_strategy == "binary-search": + experiment_config = ExperimentConfig( + use_case=uc, + dim_values=dim_values, + replicass=replicas, + partitions=partitions, + cpu_limit=cpu_limit, + memory_limit=memory_limit, + kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, + execution_minutes=execution_minutes, + domain_restriction_strategy=lower_bound_strategy, + search_strategy=binary_search_strategy, + subexperiment_executor=subexperiment_executor, + subexperiment_evaluator=subexperiment_evaluator) + # use h0 & h3 + else: + print(f"Going to execute {len(dim_values)*len(replicas)} subexperiments in total..") + experiment_config = ExperimentConfig( + use_case=uc, + dim_values=dim_values, + replicass=replicas, + partitions=partitions, + cpu_limit=cpu_limit, + memory_limit=memory_limit, + kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, + execution_minutes=execution_minutes, + domain_restriction_strategy=lower_bound_strategy, + search_strategy=check_all_strategy, + subexperiment_executor=subexperiment_executor, + subexperiment_evaluator=subexperiment_evaluator) +# not use h3 else: - print(f"Going to execute {len(dim_values)*len(replicas)} subexperiments in total..") - experiment_config = ExperimentConfig(uc, dim_values, replicas, partitions, cpu_limit, memory_limit, kafka_streams_commit_interval_ms, execution_minutes, default_strategy, subexperiment_executor, noop_subexperiment_evaluator) + # use h1 & !h3 + if search_strategy == "linear-search": + print(f"Going to execute at most {len(dim_values)+len(replicas)-1} subexperiments in total..") + experiment_config = ExperimentConfig( + use_case=uc, + dim_values=dim_values, + replicass=replicas, + partitions=partitions, + cpu_limit=cpu_limit, + memory_limit=memory_limit, + kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, + execution_minutes=execution_minutes, + domain_restriction_strategy=no_lower_bound_strategy, + search_strategy=linear_search_strategy, + subexperiment_executor=subexperiment_executor, + subexperiment_evaluator=subexperiment_evaluator) + # use h2 & !h3 + elif search_strategy == "binary-search": + experiment_config = ExperimentConfig( + use_case=uc, + dim_values=dim_values, + replicass=replicas, + partitions=partitions, + cpu_limit=cpu_limit, + memory_limit=memory_limit, + kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, + execution_minutes=execution_minutes, + domain_restriction_strategy=no_lower_bound_strategy, + search_strategy=binary_search_strategy, + subexperiment_executor=subexperiment_executor, + subexperiment_evaluator=subexperiment_evaluator) + # use h0 & !h3 + else: + print(f"Going to execute {len(dim_values)*len(replicas)} subexperiments in total..") + experiment_config = ExperimentConfig( + use_case=uc, + dim_values=dim_values, + replicass=replicas, + partitions=partitions, + cpu_limit=cpu_limit, + memory_limit=memory_limit, + kafka_streams_commit_interval_ms=kafka_streams_commit_interval_ms, + execution_minutes=execution_minutes, + domain_restriction_strategy=no_lower_bound_strategy, + search_strategy=check_all_strategy, + subexperiment_executor=subexperiment_executor, + subexperiment_evaluator=subexperiment_evaluator) executor = ExperimentExecutor(experiment_config) executor.execute() \ No newline at end of file