Bexhoma Tool
bexhoma is the CLI for managing running experiments in a Kubernetes cluster: stopping
components, checking status, inspecting results, and connecting to dashboards or a
running DBMS.
It also dispatches to root-level benchmark scripts, e.g. bexhoma tpch run.
usage: bexhoma [-h] [-db] [-fe] [-e EXPERIMENT] [-c CONNECTION] [-v] [-cx CONTEXT]
{stop,status,dashboard,localdashboard,localresults,jupyter,master,data,summary}
options:
-h, --help show this help message and exit
-db, --debug dump debug information
-fe, --force-evaluate force a re-evaluation of the results (used with summary)
-e, --experiment code of experiment
-c, --connection name of DBMS
-v, --verbose show more details about Kubernetes objects (used with status)
-cx, --context Kubernetes context to use (default: current context)
Command |
Purpose |
|---|---|
|
Remove an experiment’s components (SUT, loader, monitoring, …) from the cluster. Without |
|
Show cluster health and per-experiment/per-component status. |
|
Port-forward the in-cluster dashboard and Jupyter notebook for inspecting results stored in the cluster. |
|
Same dashboard UI, backed by results on the orchestrator’s local disk. |
|
Start a local Jupyter notebook over local-disk results. |
|
Print a preview table of local results. |
|
Print disk usage of the cluster’s data directory. |
|
Port-forward a running SUT so it’s reachable locally. |
|
Print an experiment’s results summary; |
stop
bexhoma stop -e 12345678 removes all components of experiment 12345678. If a driving
Python script for that experiment is still running, stop it too — otherwise it keeps
creating new components after they’ve been removed.
status
bexhoma status reports cluster-level health, then a table of storage volumes, then one
table per running experiment showing each component’s state:
Dashboard: Running
Message Queue: Running
Data directory: Running
Result directory: Running
Cluster Prometheus: Running
+---------------------------------------+---------------+------------+------------+----------+--------+
| Volumes | configuration | experiment | dbms | status | used |
+========================================+===============+============+============+==========+========+
| bexhoma-storage-postgresql-tpch-10 | postgresql | tpch-10 | PostgreSQL | Bound | 17G |
+---------------------------------------+---------------+------------+------------+----------+--------+
| bexhoma-storage-monetdb-tpch-100 | monetdb | tpch-100 | MonetDB | Bound | 210G |
+---------------------------------------+---------------+------------+------------+----------+--------+
The real table also includes loaded, timeLoading, storage_class_name, storage and
size per volume; -v additionally lists Deployments, StatefulSets, Services and Jobs.
dashboard / localdashboard / jupyter
bexhoma dashboard forwards the in-cluster dashboard to http://localhost:8050 and a
Jupyter notebook to http://localhost:8888 (password admin) — use it to inspect
results stored in the cluster.
bexhoma localdashboard opens the same dashboard at http://localhost:8050, but reading
results from the orchestrator’s local disk instead.
bexhoma jupyter starts a local Jupyter notebook (http://localhost:8888, password
admin) over the same local-disk results.
localresults
bexhoma localresults prints a preview table of local results (name, description, query
count, connection count, timestamp):
+------------+----------------------+-------------------------------------------------+---------+-------------+---------------------+
| index | name | info | queries | connections | time |
+------------+----------------------+-------------------------------------------------+---------+-------------+---------------------+
| 1708411664 | TPC-H Queries SF=100 | Compares run time and resource use across DBMS. | 22 | 28 | 2024-02-20 11:37:30 |
+------------+----------------------+-------------------------------------------------+---------+-------------+---------------------+
data
bexhoma data prints du -h of the cluster’s data directory, e.g. a TPC-H SF=100 data
set generated by 8 parallel generators, split into 8 parts of ~14G each:
14G /data/tpch/SF100/8/1
...
106G /data/tpch/SF100/8
106G /data/tpch/SF100
master
bexhoma master -e 12345678 -c PostgreSQL port-forwards the named SUT of an experiment
so it’s reachable at localhost:9091.
-e and -c are optional filters, not required selectors: omitting either widens the
Kubernetes label selector, and the first matching SUT Service found is the one forwarded.
If exactly one SUT is running cluster-wide, leaving both out “just works” — but if several
are running, you get whichever one the Kubernetes API happens to return first, with no
warning about the ambiguity. Pass -e/-c explicitly whenever more than one SUT may be
running.
summary
bexhoma summary -e 12345678 prints the results summary of an experiment. Add -fe to
force re-evaluation of stored results before printing.