diff --git a/Schrick-Noah_MPI-Tasking.aux b/Schrick-Noah_MPI-Tasking.aux index ea06aa6..2023bd9 100644 --- a/Schrick-Noah_MPI-Tasking.aux +++ b/Schrick-Noah_MPI-Tasking.aux @@ -85,33 +85,28 @@ \newlabel{table:tasking-gen-perf}{{II}{5}{Task Descriptions and Performance Notes}{table.2}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-A}}Number of Exploits}{5}{subsection.6.1}\protected@file@percent } \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-B}}Applicability of Exploits}{5}{subsection.6.2}\protected@file@percent } -\citation{Slurm} +\citation{cook_rage_2018} +\citation{li_concurrency_2019} +\citation{li_combining_2019} \@writefile{lof}{\contentsline {figure}{\numberline {6}{\ignorespaces Example of a Not Applicable Exploit for the MPI Tasking Testing}}{6}{figure.6}\protected@file@percent } \newlabel{fig:NA-exp}{{6}{6}{Example of a Not Applicable Exploit for the MPI Tasking Testing}{figure.6}{}} \@writefile{lof}{\contentsline {figure}{\numberline {7}{\ignorespaces Example of an Artificially Applicable Exploit for the MPI Tasking Testing}}{6}{figure.7}\protected@file@percent } \newlabel{fig:Appl-exp}{{7}{6}{Example of an Artificially Applicable Exploit for the MPI Tasking Testing}{figure.7}{}} \@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-C}}Database Load}{6}{subsection.6.3}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-D}}Testing Platform}{6}{subsection.6.4}\protected@file@percent } -\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-E}}Testing Process}{6}{subsection.6.5}\protected@file@percent } -\@writefile{toc}{\contentsline {section}{\numberline {VII}Results}{6}{section.7}\protected@file@percent } -\newlabel{sec:Tasking-Results}{{VII}{6}{Results}{section.7}{}} +\citation{Slurm} \bibdata{Bibliography} \bibcite{9678822}{1} \bibcite{7993827}{2} -\bibcite{8652334}{3} -\bibcite{baloyi_guidelines_2019}{4} -\bibcite{allman_complying_2006}{5} +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-D}}Testing Platform}{7}{subsection.6.4}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {\mbox {VI-E}}Testing Process}{7}{subsection.6.5}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {VII}Results}{7}{section.7}\protected@file@percent } +\newlabel{sec:Tasking-Results}{{VII}{7}{Results}{section.7}{}} \@writefile{toc}{\contentsline {section}{\numberline {VIII}Analysis}{7}{section.8}\protected@file@percent } \@writefile{toc}{\contentsline {section}{\numberline {IX}Conclusion}{7}{section.9}\protected@file@percent } \@writefile{toc}{\contentsline {section}{References}{7}{section*.1}\protected@file@percent } -\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}}{7}{figure.8}\protected@file@percent } -\newlabel{fig:Spd-Eff-Task}{{8}{7}{Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}{figure.8}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces MPI Tasking Approach Runtime Results}}{7}{figure.9}\protected@file@percent } -\newlabel{fig:Tasking-RT}{{9}{7}{MPI Tasking Approach Runtime Results}{figure.9}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Results for the MPI Tasking Approach in Terms of Speedup}}{7}{figure.10}\protected@file@percent } -\newlabel{fig:Tasking-Spd}{{10}{7}{Results for the MPI Tasking Approach in Terms of Speedup}{figure.10}{}} -\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Results for the MPI Tasking Approach in Terms of Efficiency}}{7}{figure.11}\protected@file@percent } -\newlabel{fig:Tasking-Eff}{{11}{7}{Results for the MPI Tasking Approach in Terms of Efficiency}{figure.11}{}} +\bibcite{8652334}{3} +\bibcite{baloyi_guidelines_2019}{4} +\bibcite{allman_complying_2006}{5} \bibcite{j_hale_compliance_nodate}{6} \bibcite{ou_scalable_2006}{7} \bibcite{CPSIOT}{8} @@ -131,7 +126,16 @@ \bibcite{cook_scalable_2016}{22} \bibcite{li_concurrency_2019}{23} \bibcite{9150145}{24} +\@writefile{lof}{\contentsline {figure}{\numberline {8}{\ignorespaces Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}}{8}{figure.8}\protected@file@percent } +\newlabel{fig:Spd-Eff-Task}{{8}{8}{Speedup and Efficiency of the MPI Tasking Approach for a Varying Number of Compute Nodes with an Increasing Problem Size}{figure.8}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {9}{\ignorespaces MPI Tasking Approach Runtime Results}}{8}{figure.9}\protected@file@percent } +\newlabel{fig:Tasking-RT}{{9}{8}{MPI Tasking Approach Runtime Results}{figure.9}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {10}{\ignorespaces Results for the MPI Tasking Approach in Terms of Speedup}}{8}{figure.10}\protected@file@percent } +\newlabel{fig:Tasking-Spd}{{10}{8}{Results for the MPI Tasking Approach in Terms of Speedup}{figure.10}{}} +\@writefile{lof}{\contentsline {figure}{\numberline {11}{\ignorespaces Results for the MPI Tasking Approach in Terms of Efficiency}}{8}{figure.11}\protected@file@percent } +\newlabel{fig:Tasking-Eff}{{11}{8}{Results for the MPI Tasking Approach in Terms of Efficiency}{figure.11}{}} \bibcite{7087377}{25} -\bibcite{Slurm}{26} +\bibcite{li_combining_2019}{26} +\bibcite{Slurm}{27} \bibstyle{ieeetr} -\gdef \@abspage@last{8} +\gdef \@abspage@last{9} diff --git a/Schrick-Noah_MPI-Tasking.bbl b/Schrick-Noah_MPI-Tasking.bbl index 0c5e4d8..4942d70 100644 --- a/Schrick-Noah_MPI-Tasking.bbl +++ b/Schrick-Noah_MPI-Tasking.bbl @@ -132,6 +132,11 @@ K.~Kaynar and F.~Sivrikaya, ``Distributed attack graph generation,'' {\em IEEE Transactions on Dependable and Secure Computing}, vol.~13, no.~5, pp.~519--532, 2016. +\bibitem{li_combining_2019} +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{Slurm} SchedMD, ``Slurm {Workload} {Manager}.'' diff --git a/Schrick-Noah_MPI-Tasking.blg b/Schrick-Noah_MPI-Tasking.blg index b102127..cb50ce4 100644 --- a/Schrick-Noah_MPI-Tasking.blg +++ b/Schrick-Noah_MPI-Tasking.blg @@ -5,45 +5,45 @@ The style file: ieeetr.bst Database file #1: Bibliography.bib Warning--entry type for "Slurm" isn't style-file defined --line 1112 of file Bibliography.bib -You've used 26 entries, +You've used 27 entries, 1876 wiz_defined-function locations, - 611 strings with 8825 characters, -and the built_in function-call counts, 6563 in all, are: -= -- 609 -> -- 272 + 614 strings with 8964 characters, +and the built_in function-call counts, 6725 in all, are: += -- 621 +> -- 283 < -- 0 -+ -- 101 -- -- 75 -* -- 444 -:= -- 914 -add.period$ -- 26 -call.type$ -- 26 -change.case$ -- 26 ++ -- 105 +- -- 78 +* -- 456 +:= -- 942 +add.period$ -- 27 +call.type$ -- 27 +change.case$ -- 27 chr.to.int$ -- 0 -cite$ -- 26 -duplicate$ -- 350 -empty$ -- 676 -format.name$ -- 75 -if$ -- 1611 +cite$ -- 27 +duplicate$ -- 359 +empty$ -- 693 +format.name$ -- 78 +if$ -- 1648 int.to.chr$ -- 0 -int.to.str$ -- 26 -missing$ -- 22 -newline$ -- 84 -num.names$ -- 25 -pop$ -- 131 +int.to.str$ -- 27 +missing$ -- 23 +newline$ -- 87 +num.names$ -- 26 +pop$ -- 135 preamble$ -- 1 purify$ -- 0 quote$ -- 0 -skip$ -- 220 +skip$ -- 221 stack$ -- 0 substring$ -- 383 -swap$ -- 121 +swap$ -- 122 text.length$ -- 0 text.prefix$ -- 0 top$ -- 0 type$ -- 0 warning$ -- 0 -while$ -- 59 -width$ -- 28 -write$ -- 232 +while$ -- 60 +width$ -- 29 +write$ -- 240 (There was 1 warning) diff --git a/Schrick-Noah_MPI-Tasking.log b/Schrick-Noah_MPI-Tasking.log index 012ab24..7103371 100644 --- a/Schrick-Noah_MPI-Tasking.log +++ b/Schrick-Noah_MPI-Tasking.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) 5 APR 2023 18:18 +This is pdfTeX, Version 3.141592653-2.6-1.40.25 (TeX Live 2023/Arch Linux) (preloaded format=pdflatex 2023.4.3) 6 APR 2023 16:05 entering extended mode restricted \write18 enabled. %&-line parsing enabled. @@ -611,58 +611,61 @@ File: ./images/Applicable_E.png Graphic file (type png) Package pdftex.def Info: ./images/Applicable_E.png used on input line 260. (pdftex.def) Requested size: 180.17268pt x 52.19485pt. + [6 <./images/NA.png> <./images/Applicable_E.png>] +Underfull \hbox (badness 2057) in paragraph at lines 273--275 +[]\OT1/ptm/m/n/10 The database load parameter was changed based on + [] -Underfull \hbox (badness 7451) in paragraph at lines 277--278 + +Underfull \hbox (badness 7451) in paragraph at lines 293--294 \OT1/ptm/m/n/10 All nodes are connected with a 10Gbps Infiniband [] -LaTeX Warning: Reference `sec:test-platform' on page 6 undefined on input line -283. - -[6 <./images/NA.png> <./images/Applicable_E.png>] - -LaTeX Warning: Reference `sec:FW' on page 7 undefined on input line 287. +LaTeX Warning: Reference `sec:test-platform' on page 7 undefined on input line +299. -Underfull \hbox (badness 3713) in paragraph at lines 287--288 +LaTeX Warning: Reference `sec:FW' on page 7 undefined on input line 303. + + +Underfull \hbox (badness 3713) in paragraph at lines 303--304 []\OT1/ptm/m/n/10 In terms of efficiency, 2 compute nodes offer the [] -<./images/Speedup-Esize-Tasking.png, id=242, 620.208pt x 321.93pt> +<./images/Speedup-Esize-Tasking.png, id=245, 620.208pt x 321.93pt> File: ./images/Speedup-Esize-Tasking.png Graphic file (type png) Package pdftex.def Info: ./images/Speedup-Esize-Tasking.png used on input line - 295. + 311. (pdftex.def) Requested size: 252.0pt x 130.80338pt. -<./images/Eff-Esize-Tasking.png, id=243, 620.208pt x 322.149pt> +<./images/Eff-Esize-Tasking.png, id=246, 620.208pt x 322.149pt> File: ./images/Eff-Esize-Tasking.png Graphic file (type png) -Package pdftex.def Info: ./images/Eff-Esize-Tasking.png used on input line 296 +Package pdftex.def Info: ./images/Eff-Esize-Tasking.png used on input line 312 . (pdftex.def) Requested size: 252.0pt x 130.89236pt. -<./images/Tasking_RT.png, id=244, 860.46469pt x 257.96375pt> +<./images/Tasking_RT.png, id=247, 860.46469pt x 257.96375pt> File: ./images/Tasking_RT.png Graphic file (type png) -Package pdftex.def Info: ./images/Tasking_RT.png used on input line 303. +Package pdftex.def Info: ./images/Tasking_RT.png used on input line 319. (pdftex.def) Requested size: 252.0pt x 75.54756pt. -<./images/Tasking_Spd.png, id=245, 860.46469pt x 276.53313pt> +<./images/Tasking_Spd.png, id=248, 860.46469pt x 276.53313pt> File: ./images/Tasking_Spd.png Graphic file (type png) -Package pdftex.def Info: ./images/Tasking_Spd.png used on input line 310. +Package pdftex.def Info: ./images/Tasking_Spd.png used on input line 326. (pdftex.def) Requested size: 252.0pt x 80.98582pt. -<./images/Tasking_Eff.png, id=246, 860.46469pt x 276.53313pt> +<./images/Tasking_Eff.png, id=249, 860.46469pt x 276.53313pt> File: ./images/Tasking_Eff.png Graphic file (type png) -Package pdftex.def Info: ./images/Tasking_Eff.png used on input line 317. +Package pdftex.def Info: ./images/Tasking_Eff.png used on input line 333. (pdftex.def) Requested size: 252.0pt x 80.98582pt. -(./Schrick-Noah_MPI-Tasking.bbl +(./Schrick-Noah_MPI-Tasking.bbl [7] Underfull \hbox (badness 1442) in paragraph at lines 21--26 \OT1/ptm/m/n/8 A Focus on Cyberphysical Systems and Internet of Things,'' in [] -[7 <./images/Speedup-Esize-Tasking.png> <./images/Eff-Esize-Tasking.png> <./ima -ges/Tasking_RT.png> <./images/Tasking_Spd.png> <./images/Tasking_Eff.png>] + Underfull \hbox (badness 1527) in paragraph at lines 56--58 []\OT1/ptm/m/n/8 P. Pacheco, \OT1/ptm/m/it/8 An Introduction to Parallel Progra mming\OT1/ptm/m/n/8 . Morgan @@ -688,7 +691,8 @@ Underfull \hbox (badness 10000) in paragraph at lines 110--114 \OT1/ptm/m/n/8 ``The Boost Graph Library, vers. 1.75.0.'' [] -) +[8 <./images/Speedup-Esize-Tasking.png> <./images/Eff-Esize-Tasking.png> <./ima +ges/Tasking_RT.png> <./images/Tasking_Spd.png> <./images/Tasking_Eff.png>]) ** Conference Paper ** Before submitting the final camera ready copy, remember to: @@ -700,7 +704,7 @@ 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. -[8 +[9 ] (./Schrick-Noah_MPI-Tasking.aux) @@ -711,13 +715,13 @@ d. (rerunfilecheck) Checksum: 4585725CEAB08F9F367E9B263A126799;3322. ) Here is how much of TeX's memory you used: - 12244 strings out of 476025 - 194707 string characters out of 5796533 + 12247 strings out of 476025 + 194754 string characters out of 5796533 1874388 words of memory out of 5000000 - 32445 multiletter control sequences out of 15000+600000 + 32446 multiletter control sequences out of 15000+600000 552034 words of font info for 106 fonts, out of 8000000 for 9000 1141 hyphenation exceptions out of 8191 - 75i,14n,76p,2022b,599s stack positions out of 5000i,500n,10000p,200000b,80000s + 75i,14n,76p,2022b,589s stack positions out of 5000i,500n,10000p,200000b,80000s -Output written on Schrick-Noah_MPI-Tasking.pdf (8 pages, 1005307 bytes). +Output written on Schrick-Noah_MPI-Tasking.pdf (9 pages, 1008332 bytes). PDF statistics: - 322 PDF objects out of 1000 (max. 8388607) - 271 compressed objects within 3 object streams - 73 named destinations out of 1000 (max. 500000) + 330 PDF objects out of 1000 (max. 8388607) + 278 compressed objects within 3 object streams + 75 named destinations out of 1000 (max. 500000) 261 words of extra memory for PDF output out of 10000 (max. 10000000) diff --git a/Schrick-Noah_MPI-Tasking.pdf b/Schrick-Noah_MPI-Tasking.pdf index 92db590..6e94690 100644 Binary files a/Schrick-Noah_MPI-Tasking.pdf and b/Schrick-Noah_MPI-Tasking.pdf differ diff --git a/Schrick-Noah_MPI-Tasking.tex b/Schrick-Noah_MPI-Tasking.tex index 86fc977..c863cb3 100644 --- a/Schrick-Noah_MPI-Tasking.tex +++ b/Schrick-Noah_MPI-Tasking.tex @@ -264,6 +264,22 @@ The applicability of exploits was tested by using percentages of overall exploit \end{figure} \subsection{Database Load} +The database load parameter is a parameter passed to RAGE to determine when to offload data. The generation of large-scale attack and compliance graphs often faces challenges with scalability and state space explosion. For these large-scale graphs, as the generation process progresses, the resulting graph and the queue of unexplored states begins to consume too much memory for most systems, and the process either needs to offload the data or run the risk of its process being killed for constraints on memory consumption. Works by the authors of \cite{cook_rage_2018}, \cite{li_concurrency_2019}, and \cite{li_combining_2019} strive for maximum performance of the generation process, which involves making full use of system memory. Since network operations, database operations, and reading and writing from disks slows the generation, it is often preferred to store all data in memory. As a result, there is a balance between performance and system memory consumption. + +RAGE has the option for automatically offloading to a PostgreSQL database based on its memory consumption. The database load parameter can either be a float between 0 and 1, or can be an integer greater than 1. If the parameter is a float, RAGE will automatically offload its graph instance or frontier if the memory consumed by either exceeds a percentage of total system memory corresponding to the float value. If the parameter is an integer greater than 1, RAGE wil automatically offload its graph instance or frontier if the number of items in either is greater than the parameter value. + +Since the goal of the stress tests is to generate identical graphs for all tests while still stressing each task, the load parameter was carefully altered. The total number of states generated by RAGE is known in advance since the resulting graph has already been generated, and will be constant for all stress tests. For the automobile example being tested, the total number of states is 394. In order to test the database load, it is preferable to use an integer value for the load parameter rather than a float. By using an integer value, it is possible to specifically target how often the offloading process should occur. If a float value was used, additional work would be needed to give RAGE only a certain amount of system memory per test. Though possible, there is more simplicity with passing in static integer values since the graph is known in advance. + +The database load parameter was changed based on percentage of the total resulting graph size, as follows: +\begin{itemize} + \item{0\% Load (Do not ever write to the database) - DBLoad = 395} + \item{25\% Load (Write to the database when 25\% of the total resulting graph size is in memory) - DBLoad = 79} + \item{50\% Load (Write to the database when 50\% of the total resulting graph size is in memory) - DBLoad = 197} + \item{75\% Load (Write to the database when 75\% of the total resulting graph size is in memory) - DBLoad = 296} + \item{100\% Load (Write to the database on every new state) - DBLoad = 1} +\end{itemize} + +The database load parameter stresses Tasks 0, 4, and 5. Task 4 will be stressed on all load parameters, except for when the load is 0\% (size 395), which serves as the control. Task 4 will experience the greatest stress when the load parameter is 100\% (size 1), since as soon as new states are discovered in previous tasks, Task 4 will begin. Task 0 and Task 5 will experience stress at the same intervals. When the queue of unexplored states increases to a size greater than the load parameter, Task 5 will empty the queue, and Task 0 will be forced to pull new states from the database. \subsection{Testing Platform} All data was collected on a 13 node cluster, with 12 nodes serving as dedicated compute nodes, and 1 node serving as the login node. Each compute node has a configuration as follows: @@ -277,7 +293,7 @@ All data was collected on a 13 node cluster, with 12 nodes serving as dedicated All nodes are connected with a 10Gbps Infiniband interconnect. \subsection{Testing Process} -Each parameter discussed in this section was individually changed until all permutations of parameters were explored. In addition to changing the parameters, all tests were conducted on a varying number of nodes. All permutations of parameters were examined on 1 compute node (serially) through 12 compute nodes. A bash script for looping through parameters was created on the distributed computing testing platform, with jobs sent to Slurm Workload Manager \cite{Slurm}. When a job completed with Slurm, the bash script would use grep on the output file to extract the necessary data, and add it to a CSV file that was used for the data analysis. +Each parameter discussed in this section was individually changed until all permutations of parameters were explored. In addition to changing the parameters, all tests were conducted on a varying number of nodes. All permutations of parameters were examined on 1 compute node (serially) through 12 compute nodes. A bash script for looping through parameters was created on the distributed computing testing platform, with jobs sent to Slurm Workload Manager \cite{Slurm}. When a job is completed with Slurm, the bash script would use grep on the output file to extract the necessary data, and add it to a CSV file that was used for the data analysis. \section{Results} \label{sec:Tasking-Results} A series of tests were conducted on the platform described at the beginning of Section \ref{sec:test-platform}, and results were collected in regards to the effect of the MPI Tasking approach on increasing sizes of exploit lists for a varying number of nodes. The exploit list initially began with 6 items, and each test scaled the number of exploits by a factor of 2. The final test was with an exploit list with 49,512 entries. If all of the items in these exploit lists were applicable, the runtime would be too great for feasible testing due to the state space explosion. To prevent state-space explosion but still gather valid results, each exploit list in the tests contained 6 exploits that could be applicable, and all remaining exploits were not applicable. The not applicable exploits were created in a fashion similar to that seen in Figure \ref{fig:NA-exp}. By creating a multitude of not applicable exploits, testing can safely be conducted by ensuring state space explosion would not occur while still observing the effectiveness of the tasking approach.