summaryrefslogtreecommitdiff
path: root/appendix
diff options
context:
space:
mode:
authormjkwiatkowski <mati.rewa@gmail.com>2026-07-11 23:53:57 +0200
committermjkwiatkowski <mati.rewa@gmail.com>2026-07-11 23:53:57 +0200
commite40a3262f0b5d0834fde5e8c5cbffb9e5ff534f2 (patch)
tree1c7104a91d5e09314193a3bda4d5a8b091fb2281 /appendix
parent95abbb9948ab7c8d4fe62aa9284c2abeced0515b (diff)
feat: completed appendix AHEADmaster
Diffstat (limited to 'appendix')
-rw-r--r--appendix/appendix.tex72
1 files changed, 71 insertions, 1 deletions
diff --git a/appendix/appendix.tex b/appendix/appendix.tex
index 2530a19..c86f476 100644
--- a/appendix/appendix.tex
+++ b/appendix/appendix.tex
@@ -1,3 +1,73 @@
\begin{appendices}
- \chapter{Reproducibility}
+ \chapter{Reproducibility}\label{s:reproducibility}
+ \section{Artifact Checklist}\label{ss:artifact_checklist}
+ \begin{enumerate}[label=\textcolor{Green}{\textbf{\ding{51}}}]
+ \item Program(s): \code{OpenDC}, \code{Confluent Kafka}, \code{PostgreSQL}, \code{Redis}, \code{Grafana}.
+ \item Data set(s): Failure traces from Talluri \etal and failure models from Javadi \etal (see also \url{https://opendc.org/learn/documentation/Input/FailureModel}).
+ \item Experiments: in \Cref{s:evaluation}.
+ \item Time is needed to reproduce the experiments: around 4 hours.
+ \item Public Experiment Archive: \url{https://git.denounce.ai}.
+ \end{enumerate}
+ \section{Experimental Setup}\label{ss:experimental_setup_appendix}
+ Confluent Kafka, (see \url{https://www.confluent.io/}) must be present on the system.
+ This includes the two different connectors from \Cref{s:implementation}.
+ The scripts to start the Confluent Kafka (assuming installation in \code{/opt/confluent} instance are listed below. First, start Kafka Connect:
+ \begin{verbatim}
+/opt/confluent/bin/connect-standalone \
+/opt/confluent/etc/kafka/connect-standalone.properties \
+/opt/confluent/share/confluent-common/connectors/sink-jdbc.properties \
+/opt/confluent/share/confluent-common/connectors/sink-redis.properties
+\end{verbatim}
+ Then, format Kafka Storage:
+ \begin{verbatim}
+/opt/confluent/bin/kafka-storage format -t \
+2vi2WtHxQAOPyXb1Bj1Jvw -c /opt/confluent/etc/kafka/server.properties \
+--standalone > /dev/null 2>&1; echo 0
+ \end{verbatim}
+ Afterwards, start Kafka Broker:
+ \begin{verbatim}
+/opt/confluent/bin/kafka-server-start /opt/confluent/etc/kafka/server.properties
+ \end{verbatim}
+ Then create a new Kafka Topic (\eg \code{postgres\_topic}):
+ \begin{verbatim}
+kafka-topics --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
+ \end{verbatim}
+ Lastly, run the Schema Registry:
+ \begin{verbatim}
+/opt/confluent/bin/schema-registry-start \
+/opt/confluent/etc/schema-registry/schema-registry.properties
+ \end{verbatim}
+ At this point, ensure \code{PostgreSQL}, \code{Redi} and \code{Grafana} are up and running on the system, on their default port configurations.
+ To see metrics flow seamlessly into \code{PostgreSQL}, once can run the following command (\ie assuming the database name is \code{opendc}):
+ \begin{verbatim}
+sudo su postgres; psql -d opendc
+ \end{verbatim}
+ Additionally, to interact with the \code{Redis} cache, we suggest to use the excellent \code{redis-cli} tool:
+ \begin{verbatim}
+redis-cli -h localhost -p 6379
+ \end{verbatim}
+ The following commands can be used to list the contents of the cache (\ie assuming stream name \code{postgres\_topic}), and to clear the cache respectively:
+ \begin{verbatim}
+XRANGE postgres_topic - +
+XTRIM postgres_topic MAXLEN 0
+ \end{verbatim}
+ For the predictive analytics in our implementation it is useful to create a separate consumer group:
+ \begin{verbatim}
+XGROUP CREATE mystream mygroup 0
+ \end{verbatim}
+ Lastly, each time you change the database schema, you must run (\ie assuming \code{schema.proto} lives in \code{resources/experiments}):
+ \begin{verbatim}
+cd resources/experiments/;
+protoc --java_out=/home/matt/git/opendc/opendc-common/src/main/java/ schema.proto
+ \end{verbatim}
+ Lastly, one has to checkout the \url{https://git.denounce.ai/opendc.git} and \url{https://git.denounce.ai/sunfish.git} repositories on their local machine.
+ \code{sunfish.git} acts as the digital twin and \code{opendc.git} acts as the physical datacenter.
+ Both contain modifications.
+ Change the directory to \code{sunfish.git}.
+ Create a \code{.venv} in \code{python\_scripts} and \code{http\_server} and install all the dependencies.
+ Then, run respectively the HTTP Server and the Python Scripts.
+ Afterwards, start \mysystem using IntellijIDEA.
+ \section{Configuration files}\label{ss:configuration_files}
+ \input{sources/config_files.tex}
\end{appendices}
+