diff options
| author | mjkwiatkowski <mati.rewa@gmail.com> | 2026-07-07 14:06:57 +0200 |
|---|---|---|
| committer | mjkwiatkowski <mati.rewa@gmail.com> | 2026-07-07 14:06:57 +0200 |
| commit | 8f27eba7ad58066cd232b566c6fc7228b6cf9385 (patch) | |
| tree | 4f976f19f332fba8c3e97a27dc6529043b3c3d36 | |
| parent | 6e056705d1f4136b8277696629210162ab20a756 (diff) | |
feat: finished section 2.3
| -rw-r--r-- | appendix/glossary.tex | 4 | ||||
| -rw-r--r-- | content/background.tex | 70 | ||||
| -rw-r--r-- | images/five_dimensional_dt.pdf | bin | 160459 -> 163941 bytes | |||
| -rwxr-xr-x[-rw-r--r--] | images/system_model.pdf | bin | 44252 -> 43486 bytes | |||
| -rw-r--r-- | sources/five_dimensional_dt.drawio | 51 | ||||
| -rw-r--r-- | sources/simulator_comparison.tex | 2 |
6 files changed, 99 insertions, 28 deletions
diff --git a/appendix/glossary.tex b/appendix/glossary.tex index 2f4281d..627d292 100644 --- a/appendix/glossary.tex +++ b/appendix/glossary.tex @@ -19,3 +19,7 @@ \newacronym{ui}{UI}{User Interface} \newacronym{http}{HTTP}{Hyper-text Transfer Protocol} \newacronym{abc}{ABC}{Approximate Bayesian Computation} +\newacronym{hp}{HP}{Hewlett Packard} +\newacronym{json}{JSON}{JavaScript Object Notation} +\newacronym{pod}{POD}{Proper Orthogonal Decomposition} +\newacronym{mae}{MAE}{Mean Absolute Error} diff --git a/content/background.tex b/content/background.tex index 03f06cb..ab361f2 100644 --- a/content/background.tex +++ b/content/background.tex @@ -4,9 +4,10 @@ \section{Datacenters}\label{ss:datacenters} -\subsection{Computing Infrastructure}\label{sss:failures} - \subsection{Datacenter Simulation}\label{sss:simulation} +\input{sources/simulator_comparison.tex} + +\subsection{Hardware Failures}\label{sss:failures} Predictive modelling uses statistics to predict outcomes. When deployed commercially, for example in datacenters, predictive modelling is often referred to as predictive analytics~\cite{Wikipedia:PredictiveModelling}. @@ -22,7 +23,6 @@ A prime example of using probability to find a good machine learning model is Ba % Stanford Encyclopedia of Philosophy, Douven 2017 The process of inference from data to provide the best explanation is called abduction. - %What is below here is true, but nonetheless the argumentation should be slightly changed. And a citation is needed. However, there has been little effort made to integrate analytics that enable consistent and reliable prediction of datacenter behaviour into a holistic digital twin of a datacenter. Nor has the fidelity of failure modeling inside a datacenter simulation increased. @@ -31,9 +31,6 @@ Since a datacenter simulator is quite different from a digital twin, we cannot u The prediciton models are the same ones for the digital twin as the ones used for the datacenter simulator. Since a digital twin is not a standalone simulator, a change to how we both predict and model failures is necessary. -\ipsum[1-2] - -\input{sources/simulator_comparison.tex} \section{Digital Twinning}\label{ss:digital-twinning} % To fix: remove the \gls commands for ExaDigiT. % This is getting silly. @@ -60,7 +57,7 @@ As a result, digital twins have become more relevant today than 10 years ago~\ci \end{figure} % (3) in the original paper by Fei Tao is referenced to just `Services`. % Nonetheless I name them here as Data Analysis Services, because what Fei Tao lists (e.g., fault detection, fault determination, fault-tolerant management, maintenance) is inherently reliant on good data analytics. -\subsection{Digital Twins across Domains}\label{sss:digital_twins_across_domains} +%\subsection{Digital Twins across Domains}\label{sss:digital_twins_across_domains} \subsection{Digital Twins for Datacenters}\label{sss:digital_twins_for_datacenters} @@ -104,13 +101,51 @@ The digital twin is designed to provide extra datasets for training \gls{ai} mod % At this point it would make sense to create the distinction between _structural_ digital twinning and _behavioural_ digital twinning. % Link to 6SigmaDC: https://www5.cadence.com/trial_datacenter_insights_lp.html +\begin{figure}[t] + \centering + \includegraphics[width=\linewidth]{images/system_model.pdf} + \caption{A generic system model for data center digital twin deployments. + The design of DyTwin~\cite{DBLP:conf/sc/TaheriBPRHDEWPM24} indirectly incorporates in its architecture a ``virtual-to-virtual`` digital thread between different digital twins. + Zhao \etal likewise present key elements to the digital thread in their architecture~\cite{DBLP:conf/AppliedEnergy/Zhao20}. We add the \emph{Digital Thread} to our model explicitly.} + \label{fig:system_model} +\end{figure} + DyTwin~\cite{DBLP:conf/sc/TaheriBPRHDEWPM24} is an adaptive digital twin with visualization and anomaly detection features. +The system, developed at \gls{hp} is a precursor to the vision on datacenter digital twinning published by Athavale \etal~\cite{DBLP:journals/computer/AthavaleBBMMPS24}. +DyTwin is the only system capable of failure detection in datacenters. +Moreover, it is the only system to incorporate the idea of federation into the concept of digital twinning. +DyTwin is designed to interact not only with the physical facility, but also other federated digital twins. +Taheri \etal show that DyTwin can effectively detect 100\% of CPU usage anomalies (\ie irregularities that affect CPU utilization, ranging from 5\% to 60\%). + +ChatTwin~\cite{DBLP:conf/sensys/LiW0Z0T23} is an \gls{ai} and \gls{llm} powered system that enables easy deployment and configuration of digital twins for datacenters. +It is a \emph{text-to-3D} approach to building digital twins of datacenters. +ChatTwin is the only work in the field that does not share the simulation technique used to construct the digital twin based on ChatTwin's configuration. +Li \etal provide a thorough set of experiments to show ChatTwin generates the \gls{json} \gls{dcdt} configuration efficiently, but do not share the final 3D visualization results. + +Reducio~\cite{DBLP:conf/sensys/CaoW0022} is a system designed to further optimize the \gls{cfd} approach to datacenter modeling. +Instead of using plain \gls{cfd} the authors focus on \gls{pod} approaches to approximate the heat transfer. +Using the \gls{pod} technique, the authors are able to model the datacenter more efficiently, achieving sub 1 degree Celsius \gls{mae} in temperature prediction. +Moreover, their model outperforms the \gls{cfd} approaches. +Cao \etal evaluate their system on an edge datacenter with 70 CPU-only server racks (see Figure 3 in \cite{DBLP:conf/sensys/CaoW0022}), and on a hyper-scale datacenter with thousands of servers (see Figure 4 in \cite{DBLP:conf/sensys/CaoW0022}). +Their results show promising gains in physics-based datacenter modelling over the conventional approaches. + +NetGraph~\cite{DBLP:conf/sigcomm/HongWDSSHZY21}, designed by Huawei Technologies and China Mobile. +NetGraph is the only system in our literature review that focuses on network management (see \Cref{tab:dt_features_comparison}). +Moreover, NetGraph employs a unique modelling technique, combining device, network and service models using graph theory. +The authors evaluate their system in a Huawei datacenter with over 50000 server racks. +With over 20 million connections in the network graphs, the system is a prime example of datacenter digital twin potential. + +Kalibre~\cite{DBLP:conf/sensys/WangZD0TCWZ20} is a system designed by Wang \etal in order to overcome the cons of \gls{cfd}. +To lessen the computational overhead, Wang \etal propose to use a knowledge-based neural surrogate to calibrate the different \gls{cfd} models. +Kalibre takes the best of both \gls{ml} and \gls{cfd} approaches and achieves sub 1 degree Celsius \gls{mae}, similarly to Reducio~\cite{DBLP:conf/sensys/CaoW0022}. + + % What is more, Microsoft already offers digital twinning as a service https://azure.microsoft.com/en-us/products/digital-twins/ % Documentation: https://learn.microsoft.com/en-us/azure/digital-twins/ % Moreover, NVIDIA is doing too as well https://www.nvidia.com/en-sg/omniverse/ -Many \gls{dcdt}'s model the cooling systems inside the warehouse, because in a typical datacenter cooling accounts for more than 40\% of total electricity usage~\cite{DBLP:conf/AppliedEnergy/Zhao20}. +To summarize, many \gls{dcdt}'s model the cooling systems inside the warehouse, because in a typical datacenter cooling accounts for more than 40\% of total electricity usage~\cite{DBLP:conf/AppliedEnergy/Zhao20}. Since the cooling subsystem is mainly airflow-based, \gls{dt} designers often opt for a \gls{cfd} approach to model the facility. The reason why a digital twin might be needed for a cooling subsystem is primarily because of inefficient operational strategy. The cooling system parameters are often set constant, regardless of outdoor temperature \etc~\cite{DBLP:conf/AppliedEnergy/Zhao20}. @@ -119,26 +154,19 @@ The cooling system parameters are often set constant, regardless of outdoor temp % Zhang argues that ``digital twin services'' are enabled by simulation monitoring \etc. % Nonetheless, I dub that they are primarily data analysis services. -\gls{oda} can be performed in-band (real-time) and out-of-band (from historical data). -Likewise, Zhao \etal shows that crucial to the digital twin system are ``always-on'' analytics (akin to in-band \gls{oda}) and ``on-demand`` analytics (akin to out-of-band \gls{oda}). +%\gls{oda} can be performed in-band (real-time) and out-of-band (from historical data). +%Likewise, Zhao \etal shows that crucial to the digital twin system are ``always-on'' analytics (akin to in-band \gls{oda}) and ``on-demand`` analytics (akin to out-of-band \gls{oda}). %Include something about data-preprocessing in the pipeline. %See the article by Fei Tao -\begin{figure} - \centering - \includegraphics[width=0.7\linewidth]{images/system_model.pdf} - \caption{A generic system model for data center digital twin deployments.} - \label{fig:system_model} -\end{figure} - -The design of DyTwin~\cite{DBLP:conf/sc/TaheriBPRHDEWPM24} incorporates in its architecture a ``virtual-to-virtual`` digital thread between different digital twins. -Zhao \etal include this element in their architecture too~\cite{DBLP:conf/AppliedEnergy/Zhao20}. -Moreover, a crucial parallel between the work of Zhao \etal and ExaDigiT is the concept of multiple models within a single digital twin. -Brewer \etal argue ExaDigiT is compromised of 5 ``smaller'' twins too. +%Moreover, a crucial parallel between the work of Zhao \etal and ExaDigiT is the concept of multiple models within a single digital twin. +%Brewer \etal argue ExaDigiT is compromised of 5 ``smaller'' twins too. %In Zhang \etal the digital twin can communicate with different other digital twins, as in the work of Taheri \etal. %To do this, the working program has an API, with a specific API endpoint to communicate with other Digital Twins. + + %In your work, consider adding such an endpoint, albeit explain in future work that you envision \emph{implementing} this endpoint in the future. diff --git a/images/five_dimensional_dt.pdf b/images/five_dimensional_dt.pdf Binary files differindex b151bce..5e28a17 100644 --- a/images/five_dimensional_dt.pdf +++ b/images/five_dimensional_dt.pdf diff --git a/images/system_model.pdf b/images/system_model.pdf Binary files differindex 61fc8f1..96f452b 100644..100755 --- a/images/system_model.pdf +++ b/images/system_model.pdf diff --git a/sources/five_dimensional_dt.drawio b/sources/five_dimensional_dt.drawio index af6cfa3..5362631 100644 --- a/sources/five_dimensional_dt.drawio +++ b/sources/five_dimensional_dt.drawio @@ -1,6 +1,6 @@ <mxfile host="app.diagrams.net"> <diagram name="Page-1" id="C7pt7gl4p0PdqAMWZAV_"> - <mxGraphModel dx="934" dy="675" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> + <mxGraphModel dx="928" dy="636" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="850" pageHeight="1100" math="0" shadow="0"> <root> <mxCell id="0" /> <mxCell id="1" parent="0" /> @@ -64,22 +64,22 @@ <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-26" parent="j7BUrm3ns0ZNhFwY7Cj1-15" style="ellipse;whiteSpace=wrap;html=1;aspect=fixed;fillColor=#dae8fc;strokeColor=#6c8ebf;direction=south;" value="3" vertex="1"> <mxGeometry height="20" width="20" x="-9" y="-10" as="geometry" /> </mxCell> - <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-18" edge="1" parent="1" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;" target="j7BUrm3ns0ZNhFwY7Cj1-10" value=""> + <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-18" edge="1" parent="1" style="endArrow=classic;startArrow=classic;html=1;rounded=0;entryX=0.5;entryY=1;entryDx=0;entryDy=0;dashed=1;" target="j7BUrm3ns0ZNhFwY7Cj1-10" value=""> <mxGeometry height="50" relative="1" width="50" as="geometry"> <mxPoint x="260" y="160" as="sourcePoint" /> <mxPoint x="260" y="160" as="targetPoint" /> </mxGeometry> </mxCell> - <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-22" edge="1" parent="1" source="j7BUrm3ns0ZNhFwY7Cj1-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" target="j7BUrm3ns0ZNhFwY7Cj1-10"> + <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-22" edge="1" parent="1" source="j7BUrm3ns0ZNhFwY7Cj1-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;dashed=1;" target="j7BUrm3ns0ZNhFwY7Cj1-10"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-23" edge="1" parent="1" source="j7BUrm3ns0ZNhFwY7Cj1-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" target="j7BUrm3ns0ZNhFwY7Cj1-10"> + <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-23" edge="1" parent="1" source="j7BUrm3ns0ZNhFwY7Cj1-3" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0.5;exitY=0;exitDx=0;exitDy=0;entryX=1;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;dashed=1;" target="j7BUrm3ns0ZNhFwY7Cj1-10"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-29" edge="1" parent="1" source="j7BUrm3ns0ZNhFwY7Cj1-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" target="j7BUrm3ns0ZNhFwY7Cj1-5"> + <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-29" edge="1" parent="1" source="j7BUrm3ns0ZNhFwY7Cj1-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=0;exitY=0.5;exitDx=0;exitDy=0;entryX=0.75;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;dashed=1;dashPattern=8 4 1 4;" target="j7BUrm3ns0ZNhFwY7Cj1-5"> <mxGeometry relative="1" as="geometry" /> </mxCell> - <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-31" edge="1" parent="1" source="j7BUrm3ns0ZNhFwY7Cj1-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" target="j7BUrm3ns0ZNhFwY7Cj1-3"> + <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-31" edge="1" parent="1" source="j7BUrm3ns0ZNhFwY7Cj1-1" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0.25;entryY=0;entryDx=0;entryDy=0;startArrow=classic;startFill=1;dashed=1;dashPattern=8 4 1 4;" target="j7BUrm3ns0ZNhFwY7Cj1-3"> <mxGeometry relative="1" as="geometry" /> </mxCell> <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-32" edge="1" parent="1" source="j7BUrm3ns0ZNhFwY7Cj1-5" style="edgeStyle=orthogonalEdgeStyle;rounded=0;orthogonalLoop=1;jettySize=auto;html=1;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;startArrow=classic;startFill=1;" target="j7BUrm3ns0ZNhFwY7Cj1-3"> @@ -88,6 +88,45 @@ <mxCell id="j7BUrm3ns0ZNhFwY7Cj1-34" parent="1" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Digital Twin" vertex="1"> <mxGeometry height="30" width="80" x="38" y="69" as="geometry" /> </mxCell> + <mxCell id="lhpz-W1zQVuOfh66NaAW-12" connectable="0" parent="1" style="group" value="" vertex="1"> + <mxGeometry height="81" width="447" x="33" y="267" as="geometry" /> + </mxCell> + <mxCell id="lhpz-W1zQVuOfh66NaAW-10" connectable="0" parent="lhpz-W1zQVuOfh66NaAW-12" style="group" value="" vertex="1"> + <mxGeometry height="56" width="440" x="7" y="25" as="geometry" /> + </mxCell> + <mxCell id="lhpz-W1zQVuOfh66NaAW-2" parent="lhpz-W1zQVuOfh66NaAW-10" style="rounded=1;whiteSpace=wrap;html=1;" value="" vertex="1"> + <mxGeometry height="30" width="440" as="geometry" /> + </mxCell> + <mxCell id="lhpz-W1zQVuOfh66NaAW-3" edge="1" parent="lhpz-W1zQVuOfh66NaAW-10" style="endArrow=classic;html=1;rounded=0;" value=""> + <mxGeometry height="50" relative="1" width="50" as="geometry"> + <mxPoint x="9" y="14.800000000000011" as="sourcePoint" /> + <mxPoint x="40" y="14.800000000000011" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="lhpz-W1zQVuOfh66NaAW-4" parent="lhpz-W1zQVuOfh66NaAW-10" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Virtual to Physical" vertex="1"> + <mxGeometry height="20" width="120" x="40" y="5" as="geometry" /> + </mxCell> + <mxCell id="lhpz-W1zQVuOfh66NaAW-6" edge="1" parent="lhpz-W1zQVuOfh66NaAW-10" style="endArrow=classic;html=1;rounded=0;dashed=1;" value=""> + <mxGeometry height="50" relative="1" width="50" as="geometry"> + <mxPoint x="170" y="14.800000000000011" as="sourcePoint" /> + <mxPoint x="201" y="14.800000000000011" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="lhpz-W1zQVuOfh66NaAW-7" edge="1" parent="lhpz-W1zQVuOfh66NaAW-10" style="endArrow=classic;html=1;rounded=0;dashed=1;dashPattern=8 4 1 4;" value=""> + <mxGeometry height="50" relative="1" width="50" as="geometry"> + <mxPoint x="326" y="12.8" as="sourcePoint" /> + <mxPoint x="357" y="12.8" as="targetPoint" /> + </mxGeometry> + </mxCell> + <mxCell id="lhpz-W1zQVuOfh66NaAW-8" parent="lhpz-W1zQVuOfh66NaAW-10" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Twin to Services" vertex="1"> + <mxGeometry height="20" width="98" x="200" y="5" as="geometry" /> + </mxCell> + <mxCell id="lhpz-W1zQVuOfh66NaAW-9" parent="lhpz-W1zQVuOfh66NaAW-10" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Twin to Data" vertex="1"> + <mxGeometry height="20" width="70" x="360" y="5" as="geometry" /> + </mxCell> + <mxCell id="lhpz-W1zQVuOfh66NaAW-11" parent="lhpz-W1zQVuOfh66NaAW-12" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=center;verticalAlign=middle;rounded=0;" value="Connection Type" vertex="1"> + <mxGeometry height="30" width="112" as="geometry" /> + </mxCell> </root> </mxGraphModel> </diagram> diff --git a/sources/simulator_comparison.tex b/sources/simulator_comparison.tex index ef5793d..4014ad0 100644 --- a/sources/simulator_comparison.tex +++ b/sources/simulator_comparison.tex @@ -1,4 +1,4 @@ -\begin{table}[h] +\begin{table}[t] \centering \renewcommand{\arraystretch}{1.4} \resizebox{\columnwidth}{!}{ |
