Skip to content

Commit 3c055ec

Browse files
authored
V0.5.19 (#99)
* storageConfiguration tag, so that postgres=9 and =13 can share a pvc * Prepare next release * Scaling factor per experiment * Demo config cleaned * Docs: Improve config and examples * Docs: Cleaned * Configuration: Dockerimage as parameter * Docs: Cleaned * Config: MonetDB log file
1 parent cee4b02 commit 3c055ec

File tree

12 files changed

+311
-270
lines changed

12 files changed

+311
-270
lines changed

README.md

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ This Python tools helps **managing benchmark experiments of Database Management
66
It enables users to configure hardware / software setups for easily repeating tests over varying configurations.
77

88
It serves as the **orchestrator** [2] for distributed parallel benchmarking experiments in a Kubernetes Cloud.
9-
This has been tested at Amazon Web Services, Google Cloud, Microsoft Azure, IBM Cloud und Oracle Cloud and at Minikube installations.
9+
This has been tested at Amazon Web Services, Google Cloud, Microsoft Azure, IBM Cloud und Oracle Cloud and at Minikube installations,
10+
running with Citus, Clickhouse, DB2, Exasol, MariaDB, MariaDB Columnstore, MemSQL, MonetDB, MySQL, OmniSci, Oracle DB, PostgreSQL, SingleStore, SQL Server and SAP HANA.
1011

1112
<p align="center">
1213
<img src="https://raw.githubusercontent.com/Beuth-Erdelt/Benchmark-Experiment-Host-Manager/master/docs/experiment-with-orchestrator.png" width="800">
@@ -23,7 +24,7 @@ See the [homepage](https://github.com/Beuth-Erdelt/Benchmark-Experiment-Host-Man
2324
1. Install the package `pip install bexhoma`
2425
1. Make sure you have a working `kubectl` installed
2526
(Also make sure to have access to a running Kubernetes cluster - for example [Minikube](https://minikube.sigs.k8s.io/docs/start/))
26-
1. Adjust configuration [tbd in detail]
27+
1. Adjust [configuration](https://bexhoma.readthedocs.io/en/latest/Config.html)
2728
1. Rename `k8s-cluster.config` to `cluster.config`
2829
1. Set name of context, namespace and name of cluster in that file
2930
1. Install data [tbd in detail]
@@ -52,8 +53,6 @@ The repository contains a [tool](experiments/tpch/) for running TPC-H (reading)
5253
For full power, use this tool as an orchestrator as in [2]. It also starts a monitoring container using [Prometheus](https://prometheus.io/) and a metrics collector container using [cAdvisor](https://github.com/google/cadvisor). It also uses the Python package [dbmsbenchmarker](https://github.com/Beuth-Erdelt/Benchmark-Experiment-Host-Manager) as query executor [2] and evaluator [1].
5354
See the [images](https://github.com/Beuth-Erdelt/Benchmark-Experiment-Host-Manager/tree/master/images/) folder for more details.
5455

55-
This module has been tested with Brytlyt, Citus, Clickhouse, DB2, Exasol, Kinetica, MariaDB, MariaDB Columnstore, MemSQL, Mariadb, MonetDB, MySQL, OmniSci, Oracle DB, PostgreSQL, SingleStore, SQL Server and SAP HANA.
56-
5756
## References
5857

5958
[1] [A Framework for Supporting Repetition and Evaluation in the Process of Cloud-Based DBMS Performance Benchmarking](https://doi.org/10.1007/978-3-030-84924-5_6)
@@ -71,5 +70,3 @@ This module has been tested with Brytlyt, Citus, Clickhouse, DB2, Exasol, Kineti
7170
> In: Nambiar R., Poess M. (eds) Performance Evaluation and Benchmarking. TPCTC 2021.
7271
> Lecture Notes in Computer Science, vol 13169. Springer, Cham.
7372
> https://doi.org/10.1007/978-3-030-94437-7_6
74-
75-
(old, slightly outdated [docs](docs/Docs_old.md))

bexhoma/configurations.py

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -470,6 +470,11 @@ def use_storage(self):
470470
storageSize = self.storage['storageSize']
471471
else:
472472
storageSize = ''
473+
if 'storageConfiguration' in self.storage:
474+
storageConfiguration = self.storage['storageConfiguration']
475+
else:
476+
storageConfiguration = ''
477+
self.storage['storageConfiguration'] = ''
473478
else:
474479
use_storage = False
475480
return use_storage
@@ -489,7 +494,10 @@ def start_sut(self, app='', component='sut', experiment='', configuration=''):
489494
template = "deploymenttemplate-"+self.docker+".yml"
490495
name = self.generate_component_name(app=app, component=component, experiment=experiment, configuration=configuration)
491496
name_worker = self.generate_component_name(app=app, component='worker', experiment=experiment, configuration=configuration)
492-
name_pvc = self.generate_component_name(app=app, component='storage', experiment=self.storage_label, configuration=configuration)
497+
if self.storage['storageConfiguration']:
498+
name_pvc = self.generate_component_name(app=app, component='storage', experiment=self.storage_label, configuration=self.storage['storageConfiguration'])
499+
else:
500+
name_pvc = self.generate_component_name(app=app, component='storage', experiment=self.storage_label, configuration=configuration)
493501
self.logger.debug('configuration.start_sut(name={})'.format(name))
494502
deployments = self.experiment.cluster.getDeployments(app=app, component=component, experiment=experiment, configuration=configuration)
495503
if len(deployments) > 0:
@@ -643,6 +651,8 @@ def start_sut(self, app='', component='sut', experiment='', configuration=''):
643651
del result[key]['spec']['template']['spec']['containers'][i]['volumeMounts'][j]
644652
if self.dockerimage:
645653
result[key]['spec']['template']['spec']['containers'][i]['image'] = self.dockerimage
654+
else:
655+
self.dockerimage = result[key]['spec']['template']['spec']['containers'][i]['image']
646656
elif not self.monitoring_active:
647657
# remove monitoring containers
648658
if container['name'] == 'cadvisor':
@@ -1111,6 +1121,7 @@ def run_benchmarker_pod(self, connection=None, code=None, info=[], resultfolder=
11111121
c['parameter']['parallelism'] = parallelism
11121122
c['parameter']['client'] = client
11131123
c['parameter']['numExperiment'] = str(self.numExperimentsDone+1)
1124+
c['parameter']['dockerimage'] = self.dockerimage
11141125
#print(c)
11151126
#print(self.experiment.cluster.config['benchmarker']['jarfolder'])
11161127
if isinstance(c['JDBC']['jar'], list):

bexhoma/experiments.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -422,8 +422,8 @@ def work_benchmark_list(self, intervals=30, stop=True):
422422
#time.sleep(intervals)
423423
self.wait(intervals)
424424
# count number of running and pending pods
425-
num_pods_running = len(self.cluster.getPods(app = self.appname, component = 'sut', status = 'Running'))
426-
num_pods_pending = len(self.cluster.getPods(app = self.appname, component = 'sut', status = 'Pending'))
425+
num_pods_running = len(self.cluster.getPods(app = self.appname, component = 'sut', experiment=self.code, status = 'Running'))
426+
num_pods_pending = len(self.cluster.getPods(app = self.appname, component = 'sut', experiment=self.code, status = 'Pending'))
427427
for config in self.configurations:
428428
# check if sut is running
429429
if not config.sut_is_running():

0 commit comments

Comments
 (0)