Checkpointing
This commit is contained in:
parent
819f5ead5d
commit
52d960530e
@ -44,9 +44,13 @@
|
||||
\citation{li_concurrency_2019}
|
||||
\citation{li_combining_2019}
|
||||
\citation{zhang_boosting_2017}
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {III}Implementation}{2}{section.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {III-A}}Memory Constraint Difficulties}{2}{subsection.3.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {III-B}}Checkpointing}{2}{subsection.3.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {III}Methodology}{2}{section.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {III-A}}Checkpointing}{2}{subsection.3.1}\protected@file@percent }
|
||||
\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces An Attack or Compliance Graph Undergoing Generation}}{2}{figure.1}\protected@file@percent }
|
||||
\newlabel{fig:cr}{{1}{2}{An Attack or Compliance Graph Undergoing Generation}{figure.1}{}}
|
||||
\newlabel{sec:mem-constraint}{{\mbox {III-A}1}{2}{Memory Constraint Difficulties}{subsubsection.3.1.1}{}}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {III-A}1}Memory Constraint Difficulties}{2}{subsubsection.3.1.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {III-A}2}Implementation}{2}{subsubsection.3.1.2}\protected@file@percent }
|
||||
\bibdata{Bibliography}
|
||||
\bibcite{schneier_modeling_1999}{1}
|
||||
\bibcite{j_hale_compliance_nodate}{2}
|
||||
@ -59,14 +63,14 @@
|
||||
\bibcite{hursey2010coordinated}{9}
|
||||
\bibcite{SCR}{10}
|
||||
\bibcite{dmtcp}{11}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {III-A}3}Portability}{3}{subsubsection.3.1.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {III-B}}Restarting}{3}{subsection.3.2}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {IV}Results}{3}{section.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {V}Conclusions and Future Work}{3}{section.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{References}{3}{section*.1}\protected@file@percent }
|
||||
\bibcite{BLCR}{12}
|
||||
\bibcite{cook_scalable_2016}{13}
|
||||
\bibcite{li_concurrency_2019}{14}
|
||||
\bibcite{li_combining_2019}{15}
|
||||
\bibstyle{ieeetr}
|
||||
\@writefile{toc}{\contentsline {subsubsection}{\numberline {\mbox {III-B}1}Portability}{3}{subsubsection.3.2.1}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {III-C}}Restarting}{3}{subsection.3.3}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {IV}Results}{3}{section.4}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{\numberline {V}Conclusions and Future Work}{3}{section.5}\protected@file@percent }
|
||||
\@writefile{toc}{\contentsline {section}{References}{3}{section*.1}\protected@file@percent }
|
||||
\gdef \@abspage@last{3}
|
||||
\gdef \@abspage@last{4}
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Arch Linux) (preloaded format=pdflatex 2023.4.3) 23 APR 2023 16:27
|
||||
This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Arch Linux) (preloaded format=pdflatex 2023.4.3) 23 APR 2023 17:00
|
||||
entering extended mode
|
||||
restricted \write18 enabled.
|
||||
%&-line parsing enabled.
|
||||
@ -513,9 +513,26 @@ Underfull \hbox (badness 1960) in paragraph at lines 70--75
|
||||
\OT1/ptm/m/n/10 scalability to mitigate state space explosion or lengthy
|
||||
[]
|
||||
|
||||
[2]
|
||||
Underfull \hbox (badness 4660) in paragraph at lines 117--122
|
||||
\OT1/ptm/m/it/10 1) Portability: [][][] \OT1/ptm/m/n/10 The checkpointing proc
|
||||
<./images/checkpoint.png, id=91, 755.82375pt x 402.50375pt>
|
||||
File: ./images/checkpoint.png Graphic file (type png)
|
||||
<use ./images/checkpoint.png>
|
||||
Package pdftex.def Info: ./images/checkpoint.png used on input line 83.
|
||||
(pdftex.def) Requested size: 252.0pt x 134.19624pt.
|
||||
|
||||
Underfull \hbox (badness 3158) in paragraph at lines 89--94
|
||||
\OT1/ptm/m/it/10 1) Memory Constraint Difficulties: [][][] \OT1/ptm/m/n/10 Whi
|
||||
le the design
|
||||
[]
|
||||
|
||||
|
||||
Underfull \hbox (badness 10000) in paragraph at lines 102--108
|
||||
\OT1/ptm/m/it/10 2) Implementation: [][][] \OT1/ptm/m/n/10 Rather than only a
|
||||
static
|
||||
[]
|
||||
|
||||
[2 <./images/checkpoint.png>]
|
||||
Underfull \hbox (badness 4660) in paragraph at lines 125--130
|
||||
\OT1/ptm/m/it/10 3) Portability: [][][] \OT1/ptm/m/n/10 The checkpointing proc
|
||||
ess is greatly
|
||||
[]
|
||||
|
||||
@ -535,7 +552,7 @@ Underfull \hbox (badness 5091) in paragraph at lines 54--56
|
||||
[]\OT1/ptm/m/n/8 J. Ansel, K. Arya, and G. Cooperman, ``Dmtcp: Transparent
|
||||
[]
|
||||
|
||||
)
|
||||
[3])
|
||||
|
||||
** Conference Paper **
|
||||
Before submitting the final camera ready copy, remember to:
|
||||
@ -547,18 +564,20 @@ Before submitting the final camera ready copy, remember to:
|
||||
uses only Type 1 fonts and that every step in the generation
|
||||
process uses the appropriate paper size.
|
||||
|
||||
[3] (./Schrick-Noah_AG-CG-CR.aux)
|
||||
[4
|
||||
|
||||
] (./Schrick-Noah_AG-CG-CR.aux)
|
||||
Package rerunfilecheck Info: File `Schrick-Noah_AG-CG-CR.out' has not changed.
|
||||
(rerunfilecheck) Checksum: 6E2DC49B6AC85A528B419E5F14917A57;1246.
|
||||
(rerunfilecheck) Checksum: CC85FF3DB94FE8393E2ED734D36908F3;1379.
|
||||
)
|
||||
Here is how much of TeX's memory you used:
|
||||
12024 strings out of 476025
|
||||
190058 string characters out of 5796533
|
||||
12042 strings out of 476025
|
||||
190409 string characters out of 5796533
|
||||
1871388 words of memory out of 5000000
|
||||
32293 multiletter control sequences out of 15000+600000
|
||||
32305 multiletter control sequences out of 15000+600000
|
||||
544489 words of font info for 89 fonts, out of 8000000 for 9000
|
||||
1141 hyphenation exceptions out of 8191
|
||||
75i,8n,76p,1314b,452s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
75i,8n,76p,1314b,588s stack positions out of 5000i,500n,10000p,200000b,80000s
|
||||
</usr/share/texmf-dist/fonts/type1/public/amsfonts/cm/cmmi10.pfb></usr/share/
|
||||
texmf-dist/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texmf-dist/font
|
||||
s/type1/public/amsfonts/cm/cmr7.pfb></usr/share/texmf-dist/fonts/type1/public/a
|
||||
@ -566,10 +585,10 @@ msfonts/cm/cmsy10.pfb></usr/share/texmf-dist/fonts/type1/urw/times/utmb8a.pfb><
|
||||
/usr/share/texmf-dist/fonts/type1/urw/times/utmbi8a.pfb></usr/share/texmf-dist/
|
||||
fonts/type1/urw/times/utmr8a.pfb></usr/share/texmf-dist/fonts/type1/urw/times/u
|
||||
tmri8a.pfb>
|
||||
Output written on Schrick-Noah_AG-CG-CR.pdf (3 pages, 110939 bytes).
|
||||
Output written on Schrick-Noah_AG-CG-CR.pdf (4 pages, 133124 bytes).
|
||||
PDF statistics:
|
||||
148 PDF objects out of 1000 (max. 8388607)
|
||||
125 compressed objects within 2 object streams
|
||||
29 named destinations out of 1000 (max. 500000)
|
||||
81 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
163 PDF objects out of 1000 (max. 8388607)
|
||||
137 compressed objects within 2 object streams
|
||||
32 named destinations out of 1000 (max. 500000)
|
||||
94 words of extra memory for PDF output out of 10000 (max. 10000000)
|
||||
|
||||
|
||||
@ -1,10 +1,11 @@
|
||||
\BOOKMARK [1][-]{section.1}{\376\377\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 1
|
||||
\BOOKMARK [1][-]{section.2}{\376\377\000R\000e\000l\000a\000t\000e\000d\000\040\000W\000o\000r\000k}{}% 2
|
||||
\BOOKMARK [1][-]{section.3}{\376\377\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n}{}% 3
|
||||
\BOOKMARK [2][-]{subsection.3.1}{\376\377\000M\000e\000m\000o\000r\000y\000\040\000C\000o\000n\000s\000t\000r\000a\000i\000n\000t\000\040\000D\000i\000f\000f\000i\000c\000u\000l\000t\000i\000e\000s}{section.3}% 4
|
||||
\BOOKMARK [2][-]{subsection.3.2}{\376\377\000C\000h\000e\000c\000k\000p\000o\000i\000n\000t\000i\000n\000g}{section.3}% 5
|
||||
\BOOKMARK [3][-]{subsubsection.3.2.1}{\376\377\000P\000o\000r\000t\000a\000b\000i\000l\000i\000t\000y}{subsection.3.2}% 6
|
||||
\BOOKMARK [2][-]{subsection.3.3}{\376\377\000R\000e\000s\000t\000a\000r\000t\000i\000n\000g}{section.3}% 7
|
||||
\BOOKMARK [1][-]{section.4}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 8
|
||||
\BOOKMARK [1][-]{section.5}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000s\000\040\000a\000n\000d\000\040\000F\000u\000t\000u\000r\000e\000\040\000W\000o\000r\000k}{}% 9
|
||||
\BOOKMARK [1][-]{section*.1}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 10
|
||||
\BOOKMARK [1][-]{section.3}{\376\377\000M\000e\000t\000h\000o\000d\000o\000l\000o\000g\000y}{}% 3
|
||||
\BOOKMARK [2][-]{subsection.3.1}{\376\377\000C\000h\000e\000c\000k\000p\000o\000i\000n\000t\000i\000n\000g}{section.3}% 4
|
||||
\BOOKMARK [3][-]{subsubsection.3.1.1}{\376\377\000M\000e\000m\000o\000r\000y\000\040\000C\000o\000n\000s\000t\000r\000a\000i\000n\000t\000\040\000D\000i\000f\000f\000i\000c\000u\000l\000t\000i\000e\000s}{subsection.3.1}% 5
|
||||
\BOOKMARK [3][-]{subsubsection.3.1.2}{\376\377\000I\000m\000p\000l\000e\000m\000e\000n\000t\000a\000t\000i\000o\000n}{subsection.3.1}% 6
|
||||
\BOOKMARK [3][-]{subsubsection.3.1.3}{\376\377\000P\000o\000r\000t\000a\000b\000i\000l\000i\000t\000y}{subsection.3.1}% 7
|
||||
\BOOKMARK [2][-]{subsection.3.2}{\376\377\000R\000e\000s\000t\000a\000r\000t\000i\000n\000g}{section.3}% 8
|
||||
\BOOKMARK [1][-]{section.4}{\376\377\000R\000e\000s\000u\000l\000t\000s}{}% 9
|
||||
\BOOKMARK [1][-]{section.5}{\376\377\000C\000o\000n\000c\000l\000u\000s\000i\000o\000n\000s\000\040\000a\000n\000d\000\040\000F\000u\000t\000u\000r\000e\000\040\000W\000o\000r\000k}{}% 10
|
||||
\BOOKMARK [1][-]{section*.1}{\376\377\000R\000e\000f\000e\000r\000e\000n\000c\000e\000s}{}% 11
|
||||
|
||||
Binary file not shown.
@ -73,12 +73,20 @@ to quadratic time and reduced the number of nodes in the resulting graph to $\ma
|
||||
presented by the authors of \cite{cook_scalable_2016} represents a description of systems and their qualities and topologies as a state, with a queue of unexplored states. This work was continued by the
|
||||
authors of \cite{li_concurrency_2019} by implementing a hash table among other features. Each of these works demonstrates an improvement in scalability through refining the desirable information output.
|
||||
|
||||
\section{Implementation}
|
||||
\section{Methodology}
|
||||
\subsection{Checkpointing}
|
||||
Previous works with RAGE have been designed around maximizing performance to limit the longer runtime caused by the state space explosion, such as the works seen by the authors of \cite{cook_rage_2018},
|
||||
\cite{li_concurrency_2019}, and \cite{li_combining_2019}. To this end, the output graph is contained in memory during the generation process to minimize disk writing and reading. RAGE does incorporate PostgreSQL as an initial and final storage mechanism to write the starting and resulting graph information, but no intermediate storage is otherwise conducted. Based on the inclusion of PostgreSQL in RAGE, the C/R approach was based around this dependency.
|
||||
\cite{li_concurrency_2019}, and \cite{li_combining_2019}. To this end, the output graph is contained in memory during the generation process to minimize disk writing and reading. RAGE does incorporate PostgreSQL as an initial and final storage mechanism to write the starting and resulting graph information, but no intermediate storage is otherwise conducted. Based on the inclusion of PostgreSQL in RAGE, the C/R approach was based around this dependency. Figure \ref{fig:cr} shows an image of an attack or compliance graph that is undergoing the generation process. All nodes and edges within the ``instance" box have been fully explored, and all information is stored in memory. All nodes within the ``frontier" box have their information stored in memory, but they have not yet undergone exploration. To checkpoint at this point in time, both the instance and the frontier need to be saved. Additionally, since the instance will no longer be used, it can be fully removed from memory. Section \ref{sec:mem-constraint} highlights the advantages and necessities of this removal.
|
||||
|
||||
\subsection{Memory Constraint Difficulties}
|
||||
While the design decision to not use intermediate storage maximizes performance for graph generation, it introduces a few complications. When generating large graphs, the system runs the risk
|
||||
\begin{figure}[htp]
|
||||
\centering
|
||||
\includegraphics[width=\linewidth]{"./images/checkpoint.png"}
|
||||
\caption{An Attack or Compliance Graph Undergoing Generation}
|
||||
\label{fig:cr}
|
||||
\end{figure}
|
||||
|
||||
\subsubsection{Memory Constraint Difficulties} \label{sec:mem-constraint}
|
||||
While the design decision to store all graph generation information in memory maximizes performance, it introduces a few complications. When generating large graphs, the system runs the risk
|
||||
of running out of memory. This typically does not occur when generation is conducted on small graphs, and is especially true when relatively small graphs are generated on an HPC
|
||||
system with substantial amounts of memory. However, when running on local systems or when the graph is large, memory can quickly be depleted due to state space explosion. The memory depletion is due to two primary
|
||||
memory consumption points: the frontier which contains all of the states that still need to be explored, and the graph instance which holds all of the states and their information,
|
||||
@ -90,7 +98,7 @@ Previous works with RAGE have been designed around maximizing performance to lim
|
||||
qualities, the size of each state becomes noticeably larger. With some graphs containing millions of nodes and billions of edges like those mentioned by the authors of \cite{zhang_boosting_2017}, it becomes increasingly
|
||||
unlikely that the graph can be fully contained within system memory. Checkpointing provides an additional benefit to the generation process to relieve its memory strain.
|
||||
|
||||
\subsection{Checkpointing}
|
||||
\subsubsection{Implementation}
|
||||
Rather than only a static implementation of storing to the database on disk at a set interval or a set size, the goal was to also allow for dynamically storing to the database only when necessary. This would allow for proper utilization of systems with greater memory, and would reduce fine-tuning of a maximum size variable before database writes on different systems. Since there is an associated cost with preparing
|
||||
the writes to disk, the communication cost across nodes, the writing to disk itself, and a cost for retrieving items from disk, it may be desirable to store as much in memory for as long as possible and only checkpoint when necessary. When
|
||||
running RAGE, a new argument can be passed \textit{(-a $<$double$>$)} to specify the amount of memory the tool should use before writing to disk. This argument is a value between 0 and 0.99 to specify a percentage. Alternatively, an integer greater than or equal to 1 can be passed, which allows for a discrete number of states to be held in memory before checkpointing.
|
||||
@ -120,7 +128,6 @@ Previous works with RAGE have been designed around maximizing performance to lim
|
||||
by using a job scheduler argument such as Slurm's ``--exclusive" option, but this may not be desirable. Instead, a user could pass in the amount of total memory to use (and can be reused from a job scheduler's memory allocation
|
||||
request option), and the checkpointing process would function in the same fashion. Since PostgreSQL is used for the checkpointing, no file system dependencies are necessary for the cluster.
|
||||
|
||||
|
||||
\subsection{Restarting}
|
||||
|
||||
|
||||
|
||||
145
images/checkpoint
Normal file
145
images/checkpoint
Normal file
@ -0,0 +1,145 @@
|
||||
<mxfile host="app.diagrams.net" modified="2023-04-23T21:47:10.713Z" agent="Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36" etag="V_daboJY1e5bZW8QE-ZE" version="21.2.1" type="device">
|
||||
<diagram name="Page-1" id="Bw8pLGF7ut9QKwLMz9FI">
|
||||
<mxGraphModel dx="1914" dy="993" 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" />
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-1" value="<font style="font-size: 19px;">0</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="150" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-2" value="<font style="font-size: 19px;">1</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="240" y="230" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-3" value="<font style="font-size: 19px;">3</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="480" y="230" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-4" value="<font style="font-size: 19px;">2</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="360" y="230" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-7" value="<font style="font-size: 19px;">7</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="680" y="310" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-10" value="<font style="font-size: 19px;">8</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="135" y="390" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-11" value="<font style="font-size: 19px;">9</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="265" y="390" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-12" value="<font style="font-size: 19px;">10</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="395" y="390" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-13" value="<font style="font-size: 19px;">11</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="605" y="390" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-14" value="<font style="font-size: 19px;">12</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="735" y="390" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-16" value="<font style="font-size: 19px;">4</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="320" y="310" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-17" value="<font style="font-size: 19px;">6</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="560" y="310" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-18" value="<font style="font-size: 19px;">5</font>" style="ellipse;whiteSpace=wrap;html=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="440" y="310" width="100" height="50" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-19" value="" style="endArrow=classic;html=1;rounded=0;" edge="1" parent="1">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="409.5" y="200" as="sourcePoint" />
|
||||
<mxPoint x="410" y="230" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-20" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="1q9oL-J-YfLs7LFXKfUn-1" target="1q9oL-J-YfLs7LFXKfUn-2">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="230" y="170" as="sourcePoint" />
|
||||
<mxPoint x="230" y="220" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-21" value="" style="endArrow=classic;html=1;rounded=0;exitX=1;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="1q9oL-J-YfLs7LFXKfUn-1" target="1q9oL-J-YfLs7LFXKfUn-3">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="240" y="180" as="sourcePoint" />
|
||||
<mxPoint x="240" y="230" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-22" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="1q9oL-J-YfLs7LFXKfUn-2" target="1q9oL-J-YfLs7LFXKfUn-16">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="250" y="190" as="sourcePoint" />
|
||||
<mxPoint x="250" y="240" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-23" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="1q9oL-J-YfLs7LFXKfUn-4" target="1q9oL-J-YfLs7LFXKfUn-16">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="260" y="200" as="sourcePoint" />
|
||||
<mxPoint x="260" y="250" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-24" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="1q9oL-J-YfLs7LFXKfUn-18">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="410" y="280" as="sourcePoint" />
|
||||
<mxPoint x="270" y="260" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-25" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="1q9oL-J-YfLs7LFXKfUn-3" target="1q9oL-J-YfLs7LFXKfUn-18">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="280" y="220" as="sourcePoint" />
|
||||
<mxPoint x="280" y="270" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-26" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="1q9oL-J-YfLs7LFXKfUn-3" target="1q9oL-J-YfLs7LFXKfUn-17">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="290" y="230" as="sourcePoint" />
|
||||
<mxPoint x="290" y="280" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-27" value="" style="endArrow=classic;html=1;rounded=0;entryX=0;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" target="1q9oL-J-YfLs7LFXKfUn-7">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="530" y="280" as="sourcePoint" />
|
||||
<mxPoint x="300" y="290" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-28" value="" style="endArrow=classic;html=1;rounded=0;exitX=0;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="1q9oL-J-YfLs7LFXKfUn-16" target="1q9oL-J-YfLs7LFXKfUn-10">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="310" y="250" as="sourcePoint" />
|
||||
<mxPoint x="310" y="300" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-29" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="1q9oL-J-YfLs7LFXKfUn-16" target="1q9oL-J-YfLs7LFXKfUn-11">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="320" y="260" as="sourcePoint" />
|
||||
<mxPoint x="320" y="310" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-30" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="1q9oL-J-YfLs7LFXKfUn-18" target="1q9oL-J-YfLs7LFXKfUn-12">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="330" y="270" as="sourcePoint" />
|
||||
<mxPoint x="330" y="320" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-31" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="1q9oL-J-YfLs7LFXKfUn-7" target="1q9oL-J-YfLs7LFXKfUn-13">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="340" y="280" as="sourcePoint" />
|
||||
<mxPoint x="340" y="330" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-32" value="" style="endArrow=classic;html=1;rounded=0;exitX=0.5;exitY=1;exitDx=0;exitDy=0;" edge="1" parent="1" source="1q9oL-J-YfLs7LFXKfUn-7" target="1q9oL-J-YfLs7LFXKfUn-14">
|
||||
<mxGeometry width="50" height="50" relative="1" as="geometry">
|
||||
<mxPoint x="350" y="290" as="sourcePoint" />
|
||||
<mxPoint x="350" y="340" as="targetPoint" />
|
||||
</mxGeometry>
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-33" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeWidth=4;" vertex="1" parent="1">
|
||||
<mxGeometry x="190" y="143" width="610" height="230" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-34" value="<font style="font-size: 19px;">Instance</font>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="520" y="103" width="100" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-35" value="" style="rounded=0;whiteSpace=wrap;html=1;fillColor=none;strokeWidth=3;dashed=1;" vertex="1" parent="1">
|
||||
<mxGeometry x="120" y="380" width="750" height="80" as="geometry" />
|
||||
</mxCell>
|
||||
<mxCell id="1q9oL-J-YfLs7LFXKfUn-36" value="<font style="font-size: 19px;">Frontier</font>" style="text;html=1;align=center;verticalAlign=middle;resizable=0;points=[];autosize=1;strokeColor=none;fillColor=none;" vertex="1" parent="1">
|
||||
<mxGeometry x="430" y="463" width="90" height="40" as="geometry" />
|
||||
</mxCell>
|
||||
</root>
|
||||
</mxGraphModel>
|
||||
</diagram>
|
||||
</mxfile>
|
||||
BIN
images/checkpoint.png
Normal file
BIN
images/checkpoint.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 52 KiB |
Loading…
x
Reference in New Issue
Block a user