From b8fa5cfd3c03e061156b3fc2eb083e429ffc7fb4 Mon Sep 17 00:00:00 2001 From: noah Date: Sun, 23 Apr 2023 17:48:28 -0500 Subject: [PATCH] Conclusions and Future Work --- Bibliography.bib | 16 +++++++++++ Schrick-Noah_AG-CG-CR.aux | 12 ++++---- Schrick-Noah_AG-CG-CR.bbl | 6 ++++ Schrick-Noah_AG-CG-CR.blg | 56 +++++++++++++++++++------------------- Schrick-Noah_AG-CG-CR.log | 39 +++++++++++++++++--------- Schrick-Noah_AG-CG-CR.pdf | Bin 133124 -> 135615 bytes Schrick-Noah_AG-CG-CR.tex | 5 +++- 7 files changed, 87 insertions(+), 47 deletions(-) diff --git a/Bibliography.bib b/Bibliography.bib index 3c1ac50..cd6d6ed 100644 --- a/Bibliography.bib +++ b/Bibliography.bib @@ -1,3 +1,19 @@ +@inproceedings{CR-Simple, + author = {Nosayba El{-}Sayed and + Bianca Schroeder}, + title = {Checkpoint/restart in practice: When 'simple is better'}, + booktitle = {2014 {IEEE} International Conference on Cluster Computing, {CLUSTER} + 2014, Madrid, Spain, September 22-26, 2014}, + pages = {84--92}, + publisher = {{IEEE} Computer Society}, + year = {2014}, + url = {https://doi.org/10.1109/CLUSTER.2014.6968777}, + doi = {10.1109/CLUSTER.2014.6968777}, + timestamp = {Thu, 23 Mar 2023 23:59:40 +0100}, + biburl = {https://dblp.org/rec/conf/cluster/El-SayedS14.bib}, + bibsource = {dblp computer science bibliography, https://dblp.org} +} + @book{hursey2010coordinated, title={Coordinated checkpoint/restart process fault tolerance for MPI applications on HPC systems}, author={Hursey, Joshua}, diff --git a/Schrick-Noah_AG-CG-CR.aux b/Schrick-Noah_AG-CG-CR.aux index 159de4c..d5bcb51 100644 --- a/Schrick-Noah_AG-CG-CR.aux +++ b/Schrick-Noah_AG-CG-CR.aux @@ -51,6 +51,11 @@ \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 } +\@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 } +\citation{CR-Simple} \bibdata{Bibliography} \bibcite{schneier_modeling_1999}{1} \bibcite{j_hale_compliance_nodate}{2} @@ -63,14 +68,11 @@ \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} +\bibcite{CR-Simple}{16} \bibstyle{ieeetr} +\@writefile{toc}{\contentsline {section}{References}{4}{section*.1}\protected@file@percent } \gdef \@abspage@last{4} diff --git a/Schrick-Noah_AG-CG-CR.bbl b/Schrick-Noah_AG-CG-CR.bbl index 64c2905..68a0f7c 100644 --- a/Schrick-Noah_AG-CG-CR.bbl +++ b/Schrick-Noah_AG-CG-CR.bbl @@ -73,4 +73,10 @@ M.~Li, P.~Hawrylak, and J.~Hale, ``Combining {OpenCL} and {MPI} to support heterogeneous computing on a cluster,'' {\em ACM International Conference Proceeding Series}, 2019. +\bibitem{CR-Simple} +N.~El{-}Sayed and B.~Schroeder, ``Checkpoint/restart in practice: When 'simple + is better','' in {\em 2014 {IEEE} International Conference on Cluster + Computing, {CLUSTER} 2014, Madrid, Spain, September 22-26, 2014}, pp.~84--92, + {IEEE} Computer Society, 2014. + \end{thebibliography} diff --git a/Schrick-Noah_AG-CG-CR.blg b/Schrick-Noah_AG-CG-CR.blg index 03e979b..7340040 100644 --- a/Schrick-Noah_AG-CG-CR.blg +++ b/Schrick-Noah_AG-CG-CR.blg @@ -4,45 +4,45 @@ The top-level auxiliary file: Schrick-Noah_AG-CG-CR.aux The style file: ieeetr.bst Database file #1: Bibliography.bib Warning--empty journal in BLCR -You've used 15 entries, +You've used 16 entries, 1876 wiz_defined-function locations, - 556 strings with 6253 characters, -and the built_in function-call counts, 3258 in all, are: -= -- 298 -> -- 150 + 564 strings with 6509 characters, +and the built_in function-call counts, 3570 in all, are: += -- 330 +> -- 158 < -- 0 -+ -- 56 -- -- 41 -* -- 211 -:= -- 489 -add.period$ -- 18 -call.type$ -- 15 -change.case$ -- 13 ++ -- 59 +- -- 43 +* -- 230 +:= -- 528 +add.period$ -- 19 +call.type$ -- 16 +change.case$ -- 14 chr.to.int$ -- 0 -cite$ -- 16 -duplicate$ -- 168 -empty$ -- 330 -format.name$ -- 41 -if$ -- 786 +cite$ -- 17 +duplicate$ -- 187 +empty$ -- 364 +format.name$ -- 43 +if$ -- 865 int.to.chr$ -- 0 -int.to.str$ -- 15 -missing$ -- 13 -newline$ -- 52 -num.names$ -- 15 -pop$ -- 69 +int.to.str$ -- 16 +missing$ -- 14 +newline$ -- 55 +num.names$ -- 16 +pop$ -- 75 preamble$ -- 1 purify$ -- 0 quote$ -- 0 -skip$ -- 87 +skip$ -- 100 stack$ -- 0 -substring$ -- 147 -swap$ -- 50 +substring$ -- 171 +swap$ -- 57 text.length$ -- 0 text.prefix$ -- 0 top$ -- 0 type$ -- 0 warning$ -- 1 -while$ -- 28 -width$ -- 17 -write$ -- 131 +while$ -- 32 +width$ -- 18 +write$ -- 141 (There was 1 warning) diff --git a/Schrick-Noah_AG-CG-CR.log b/Schrick-Noah_AG-CG-CR.log index 175d3ad..8e417c7 100644 --- a/Schrick-Noah_AG-CG-CR.log +++ b/Schrick-Noah_AG-CG-CR.log @@ -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 17:00 +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:48 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -536,6 +536,21 @@ Underfull \hbox (badness 4660) in paragraph at lines 125--130 ess is greatly [] + +Underfull \hbox (badness 1622) in paragraph at lines 137--138 +\OT1/ptm/m/n/10 function calls or snapshots that are required. The C/R + [] + +[3] +Underfull \hbox (badness 2150) in paragraph at lines 139--140 +\OT1/ptm/m/n/10 checkpoint times and sizes, as well as time taken to + [] + + +Underfull \hbox (badness 1565) in paragraph at lines 139--140 +\OT1/ptm/m/n/10 settings to alter or enable, or communication strategies + [] + (./Schrick-Noah_AG-CG-CR.bbl Underfull \hbox (badness 2351) in paragraph at lines 27--30 []\OT1/ptm/m/n/8 S. Ainsworth and T. M. Jones, ``Graph prefetching using data @@ -552,7 +567,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: @@ -564,20 +579,18 @@ 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. -[4 - -] (./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: CC85FF3DB94FE8393E2ED734D36908F3;1379. ) Here is how much of TeX's memory you used: - 12042 strings out of 476025 - 190409 string characters out of 5796533 + 12044 strings out of 476025 + 190434 string characters out of 5796533 1871388 words of memory out of 5000000 - 32305 multiletter control sequences out of 15000+600000 + 32306 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,588s stack positions out of 5000i,500n,10000p,200000b,80000s + 75i,8n,76p,1314b,453s stack positions out of 5000i,500n,10000p,200000b,80000s < /usr/share/texmf-dist/fonts/type1/urw/times/utmbi8a.pfb> -Output written on Schrick-Noah_AG-CG-CR.pdf (4 pages, 133124 bytes). +Output written on Schrick-Noah_AG-CG-CR.pdf (4 pages, 135615 bytes). PDF statistics: - 163 PDF objects out of 1000 (max. 8388607) - 137 compressed objects within 2 object streams - 32 named destinations out of 1000 (max. 500000) + 165 PDF objects out of 1000 (max. 8388607) + 139 compressed objects within 2 object streams + 33 named destinations out of 1000 (max. 500000) 94 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/Schrick-Noah_AG-CG-CR.pdf b/Schrick-Noah_AG-CG-CR.pdf index 3ef74ba76af4d953dda7bcfb59e6f8fd516b07a1..6c6724f529880c3c2c2434bfd6394d66237bcbc2 100644 GIT binary patch delta 30085 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 E0&OH{FaQ7m diff --git a/Schrick-Noah_AG-CG-CR.tex b/Schrick-Noah_AG-CG-CR.tex index 10002da..c44dde4 100644 --- a/Schrick-Noah_AG-CG-CR.tex +++ b/Schrick-Noah_AG-CG-CR.tex @@ -129,11 +129,14 @@ Previous works with RAGE have been designed around maximizing performance to lim 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} - +The restarting process for attack and compliance graph generation requires only a limited set of information. In order for a proper generation restart, the generator first needs to pull the unexplored queue (``frontier") database table into memory. After the frontier is loaded, the generator tool needs to know at which integer to begin tagging new states. This is accomplished by checking the ID of the latest state in the frontier. Since the instance has already been explored, it does not need to be retrieved from disk. In addition, the frontier is a queue of unexplored nodes. Since these nodes have yet to be explored, no edge information is available, and as a result, no edge information is required. At this point, the generator tool is able to pop the first node from the queue and resume the generation process. \section{Results} \section{Conclusions and Future Work} +This work presents an application-level approach at C/R. This approach was built into RAGE itself, and has no dependencies on C/R libraries. In addition, it does not need support from the operating system, allowing for fault-tolerance on HPC clusters that may not support C/R. The results highlight the minimal time requirement to both checkpoint and restart the generation process. Since only the necessary information is stored and retrieved, there are no lengthy function calls or snapshots that are required. The C/R implemented also serves as a form of memory relief. Due to the size of large-scale attack and compliance graphs, there is increased difficulty in storing all information in memory. This approach allows users to abstract away the memory constraint difficulties while maximizing performance. + +Future work includes performance and size comparisons to available C/R libraries. This would include implementing SCR, BLCR, and/or DMTCP and measuring their respective checkpoint times and sizes, as well as time taken to restart. This timing information can then be compared to the checkpoint and restart time presented by this work. Future work could also include new optimization techniques. Additional investigations can provide insight on techniques for reducing the runtime of database queries, PostgreSQL database settings to alter or enable, or communication strategies between distributed nodes. Other work can involve alternative approaches at C/R. This work made use of PostgreSQL since it was already incorporated into RAGE, but future work can look toward alternatives. Filesystem C/R approaches can be investigated to determine possible advantages over a dedicated database. One other route for future work involves identifying the checkpointing interval. The work presented by the authors of \cite{CR-Simple} discusses a multitude of options for determining an optimal interval. Various options presented in their work can be implemented, along with their closed-form solution for identifying a default checkpointing interval that can be built into RAGE. %\bibliographyp \bibliography{Bibliography}