Skip to content
Snippets Groups Projects
Commit 094fa82c authored by Björn Vonheiden's avatar Björn Vonheiden
Browse files

Merge remote-tracking branch...

Merge remote-tracking branch 'simon/46-add-more-detailed-benchmarking-strategies' into feature/theodolitePython
parents bbeba2ec 9e57f8f0
Branches
Tags
1 merge request!42Integerate theodolite and run uc python scripts
...@@ -4,6 +4,7 @@ from dataclasses import dataclass ...@@ -4,6 +4,7 @@ from dataclasses import dataclass
class ExperimentConfig: class ExperimentConfig:
""" Wrapper for the configuration of an experiment. """ """ Wrapper for the configuration of an experiment. """
use_case: str use_case: str
exp_id: int
dim_values: list dim_values: list
replicass: list replicass: list
partitions: int partitions: int
......
...@@ -4,6 +4,7 @@ from dataclasses import dataclass ...@@ -4,6 +4,7 @@ from dataclasses import dataclass
class SubexperimentConfig: class SubexperimentConfig:
""" Wrapper for the configuration of a subexperiment """ """ Wrapper for the configuration of a subexperiment """
use_case: str use_case: str
exp_id: int
counter: int counter: int
dim_value: int dim_value: int
replicas: int replicas: int
......
...@@ -5,7 +5,7 @@ from strategies.strategies.config import SubexperimentConfig ...@@ -5,7 +5,7 @@ from strategies.strategies.config import SubexperimentConfig
def binary_search(config, dim_value, lower, upper, subexperiment_counter): def binary_search(config, dim_value, lower, upper, subexperiment_counter):
if lower == upper: if lower == upper:
print(f"Run subexperiment {subexperiment_counter} with config {dim_value} {config.replicass[lower]}") print(f"Run subexperiment {subexperiment_counter} with config {dim_value} {config.replicass[lower]}")
subexperiment_config = SubexperimentConfig(config.use_case, subexperiment_counter, dim_value, config.replicass[lower], config.partitions, config.cpu_limit, config.memory_limit, config.kafka_streams_commit_interval_ms, config.execution_minutes) subexperiment_config = SubexperimentConfig(config.use_case, config.exp_id, subexperiment_counter, dim_value, config.replicass[lower], config.partitions, config.cpu_limit, config.memory_limit, config.kafka_streams_commit_interval_ms, config.execution_minutes)
config.subexperiment_executor.execute(subexperiment_config) config.subexperiment_executor.execute(subexperiment_config)
result = config.subexperiment_evaluator.execute(subexperiment_config) result = config.subexperiment_evaluator.execute(subexperiment_config)
if result==1: # successful, the upper neighbor is assumed to also has been successful if result==1: # successful, the upper neighbor is assumed to also has been successful
...@@ -14,14 +14,14 @@ def binary_search(config, dim_value, lower, upper, subexperiment_counter): ...@@ -14,14 +14,14 @@ def binary_search(config, dim_value, lower, upper, subexperiment_counter):
return (lower+1, subexperiment_counter) return (lower+1, subexperiment_counter)
elif lower+1==upper: elif lower+1==upper:
print(f"Run subexperiment {subexperiment_counter} with config {dim_value} {config.replicass[lower]}") print(f"Run subexperiment {subexperiment_counter} with config {dim_value} {config.replicass[lower]}")
subexperiment_config = SubexperimentConfig(config.use_case, subexperiment_counter, dim_value, config.replicass[lower], config.partitions, config.cpu_limit, config.memory_limit, config.kafka_streams_commit_interval_ms, config.execution_minutes) subexperiment_config = SubexperimentConfig(config.use_case, config.exp_id, subexperiment_counter, dim_value, config.replicass[lower], config.partitions, config.cpu_limit, config.memory_limit, config.kafka_streams_commit_interval_ms, config.execution_minutes)
config.subexperiment_executor.execute(subexperiment_config) config.subexperiment_executor.execute(subexperiment_config)
result = config.subexperiment_evaluator.execute(subexperiment_config) result = config.subexperiment_evaluator.execute(subexperiment_config)
if result==1: # minimal instances found if result==1: # minimal instances found
return (lower, subexperiment_counter) return (lower, subexperiment_counter)
else: # not successful, check if lower+1 instances are sufficient else: # not successful, check if lower+1 instances are sufficient
print(f"Run subexperiment {subexperiment_counter} with config {dim_value} {config.replicass[upper]}") print(f"Run subexperiment {subexperiment_counter} with config {dim_value} {config.replicass[upper]}")
subexperiment_config = SubexperimentConfig(config.use_case, subexperiment_counter, dim_value, config.replicass[upper], config.partitions, config.cpu_limit, config.memory_limit, config.kafka_streams_commit_interval_ms, config.execution_minutes) subexperiment_config = SubexperimentConfig(config.use_case, config.exp_id, subexperiment_counter, dim_value, config.replicass[upper], config.partitions, config.cpu_limit, config.memory_limit, config.kafka_streams_commit_interval_ms, config.execution_minutes)
config.subexperiment_executor.execute(subexperiment_config) config.subexperiment_executor.execute(subexperiment_config)
result = config.subexperiment_evaluator.execute(subexperiment_config) result = config.subexperiment_evaluator.execute(subexperiment_config)
if result == 1: # minimal instances found if result == 1: # minimal instances found
...@@ -32,7 +32,7 @@ def binary_search(config, dim_value, lower, upper, subexperiment_counter): ...@@ -32,7 +32,7 @@ def binary_search(config, dim_value, lower, upper, subexperiment_counter):
# test mid # test mid
mid=(upper+lower)//2 mid=(upper+lower)//2
print(f"Run subexperiment {subexperiment_counter} with config {dim_value} {config.replicass[mid]}") print(f"Run subexperiment {subexperiment_counter} with config {dim_value} {config.replicass[mid]}")
subexperiment_config = SubexperimentConfig(config.use_case, subexperiment_counter, dim_value, config.replicass[mid], config.partitions, config.cpu_limit, config.memory_limit, config.kafka_streams_commit_interval_ms, config.execution_minutes) subexperiment_config = SubexperimentConfig(config.use_case, config.exp_id, subexperiment_counter, dim_value, config.replicass[mid], config.partitions, config.cpu_limit, config.memory_limit, config.kafka_streams_commit_interval_ms, config.execution_minutes)
config.subexperiment_executor.execute(subexperiment_config) config.subexperiment_executor.execute(subexperiment_config)
result = config.subexperiment_evaluator.execute(subexperiment_config) result = config.subexperiment_evaluator.execute(subexperiment_config)
if result == 1: # success -> search in (lower, mid-1) if result == 1: # success -> search in (lower, mid-1)
......
...@@ -12,7 +12,7 @@ def execute(config, dim_value_index, lower_replicas_bound_index, subexperiment_c ...@@ -12,7 +12,7 @@ def execute(config, dim_value_index, lower_replicas_bound_index, subexperiment_c
replicas=config.replicass[lower_replicas_bound_index] replicas=config.replicass[lower_replicas_bound_index]
print(f"Run subexperiment {subexperiment_counter} of {subexperiments_total} with dimension value {dim_value} and {replicas} replicas.") print(f"Run subexperiment {subexperiment_counter} of {subexperiments_total} with dimension value {dim_value} and {replicas} replicas.")
subexperiment_config = SubexperimentConfig(config.use_case, subexperiment_counter, dim_value, replicas, config.partitions, config.cpu_limit, config.memory_limit, config.kafka_streams_commit_interval_ms, config.execution_minutes) subexperiment_config = SubexperimentConfig(config.use_case, config.exp_id, subexperiment_counter, dim_value, replicas, config.partitions, config.cpu_limit, config.memory_limit, config.kafka_streams_commit_interval_ms, config.execution_minutes)
config.subexperiment_executor.execute(subexperiment_config) config.subexperiment_executor.execute(subexperiment_config)
......
...@@ -11,7 +11,7 @@ def execute(config, dim_value_index, lower_replicas_bound_index, subexperiment_c ...@@ -11,7 +11,7 @@ def execute(config, dim_value_index, lower_replicas_bound_index, subexperiment_c
replicas=config.replicass[lower_replicas_bound_index] replicas=config.replicass[lower_replicas_bound_index]
print(f"Run subexperiment {subexperiment_counter} from at most {subexperiments_total} with dimension value {dim_value} and {replicas} replicas.") print(f"Run subexperiment {subexperiment_counter} from at most {subexperiments_total} with dimension value {dim_value} and {replicas} replicas.")
subexperiment_config = SubexperimentConfig(config.use_case, subexperiment_counter, dim_value, replicas, config.partitions, config.cpu_limit, config.memory_limit, config.kafka_streams_commit_interval_ms, config.execution_minutes) subexperiment_config = SubexperimentConfig(config.use_case, config.exp_id, subexperiment_counter, dim_value, replicas, config.partitions, config.cpu_limit, config.memory_limit, config.kafka_streams_commit_interval_ms, config.execution_minutes)
config.subexperiment_executor.execute(subexperiment_config) config.subexperiment_executor.execute(subexperiment_config)
result = config.subexperiment_evaluator.execute(subexperiment_config) result = config.subexperiment_evaluator.execute(subexperiment_config)
......
...@@ -5,7 +5,7 @@ import run_uc ...@@ -5,7 +5,7 @@ import run_uc
def execute(subexperiment_config): def execute(subexperiment_config):
run_uc.main( run_uc.main(
exp_id=subexperiment_config.counter, exp_id=subexperiment_config.exp_id,
uc_id=subexperiment_config.use_case, uc_id=subexperiment_config.use_case,
dim_value=int(subexperiment_config.dim_value), dim_value=int(subexperiment_config.dim_value),
instances=int(subexperiment_config.replicas), instances=int(subexperiment_config.replicas),
......
...@@ -26,6 +26,15 @@ search_strategy=sys.argv[10] if len(sys.argv) >= 11 and (sys.argv[10] == "linear ...@@ -26,6 +26,15 @@ search_strategy=sys.argv[10] if len(sys.argv) >= 11 and (sys.argv[10] == "linear
print(f"Domain restriction of search space activated: {domain_restriction}") print(f"Domain restriction of search space activated: {domain_restriction}")
print(f"Chosen search strategy: {search_strategy}") print(f"Chosen search strategy: {search_strategy}")
if os.path.exists("exp_counter.txt"):
with open("exp_counter.txt", mode="r") as read_stream:
exp_id = int(read_stream.read())
else:
exp_id = 0
with open("exp_counter.txt", mode="w") as write_stream:
write_stream.write(str(exp_id+1))
# domain restriction # domain restriction
if domain_restriction: if domain_restriction:
# domain restriction + linear-search # domain restriction + linear-search
...@@ -33,6 +42,7 @@ if domain_restriction: ...@@ -33,6 +42,7 @@ if domain_restriction:
print(f"Going to execute at most {len(dim_values)+len(replicas)-1} subexperiments in total..") print(f"Going to execute at most {len(dim_values)+len(replicas)-1} subexperiments in total..")
experiment_config = ExperimentConfig( experiment_config = ExperimentConfig(
use_case=uc, use_case=uc,
exp_id=exp_id,
dim_values=dim_values, dim_values=dim_values,
replicass=replicas, replicass=replicas,
partitions=partitions, partitions=partitions,
...@@ -48,6 +58,7 @@ if domain_restriction: ...@@ -48,6 +58,7 @@ if domain_restriction:
elif search_strategy == "binary-search": elif search_strategy == "binary-search":
experiment_config = ExperimentConfig( experiment_config = ExperimentConfig(
use_case=uc, use_case=uc,
exp_id=exp_id,
dim_values=dim_values, dim_values=dim_values,
replicass=replicas, replicass=replicas,
partitions=partitions, partitions=partitions,
...@@ -64,6 +75,7 @@ if domain_restriction: ...@@ -64,6 +75,7 @@ if domain_restriction:
print(f"Going to execute {len(dim_values)*len(replicas)} subexperiments in total..") print(f"Going to execute {len(dim_values)*len(replicas)} subexperiments in total..")
experiment_config = ExperimentConfig( experiment_config = ExperimentConfig(
use_case=uc, use_case=uc,
exp_id=exp_id,
dim_values=dim_values, dim_values=dim_values,
replicass=replicas, replicass=replicas,
partitions=partitions, partitions=partitions,
...@@ -82,6 +94,7 @@ else: ...@@ -82,6 +94,7 @@ else:
print(f"Going to execute at most {len(dim_values)*len(replicas)} subexperiments in total..") print(f"Going to execute at most {len(dim_values)*len(replicas)} subexperiments in total..")
experiment_config = ExperimentConfig( experiment_config = ExperimentConfig(
use_case=uc, use_case=uc,
exp_id=exp_id,
dim_values=dim_values, dim_values=dim_values,
replicass=replicas, replicass=replicas,
partitions=partitions, partitions=partitions,
...@@ -97,6 +110,7 @@ else: ...@@ -97,6 +110,7 @@ else:
elif search_strategy == "binary-search": elif search_strategy == "binary-search":
experiment_config = ExperimentConfig( experiment_config = ExperimentConfig(
use_case=uc, use_case=uc,
exp_id=exp_id,
dim_values=dim_values, dim_values=dim_values,
replicass=replicas, replicass=replicas,
partitions=partitions, partitions=partitions,
...@@ -113,6 +127,7 @@ else: ...@@ -113,6 +127,7 @@ else:
print(f"Going to execute {len(dim_values)*len(replicas)} subexperiments in total..") print(f"Going to execute {len(dim_values)*len(replicas)} subexperiments in total..")
experiment_config = ExperimentConfig( experiment_config = ExperimentConfig(
use_case=uc, use_case=uc,
exp_id=exp_id,
dim_values=dim_values, dim_values=dim_values,
replicass=replicas, replicass=replicas,
partitions=partitions, partitions=partitions,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment