From b74cf8ee26ed5a07dd415b3e7f6730502979cb7c Mon Sep 17 00:00:00 2001 From: noah Date: Thu, 6 Apr 2023 16:09:18 -0500 Subject: [PATCH] Database Load --- Schrick-Noah_MPI-Tasking.aux | 40 +++++++++++---------- Schrick-Noah_MPI-Tasking.bbl | 5 +++ Schrick-Noah_MPI-Tasking.blg | 54 ++++++++++++++-------------- Schrick-Noah_MPI-Tasking.log | 68 ++++++++++++++++++----------------- Schrick-Noah_MPI-Tasking.pdf | Bin 1005307 -> 1008332 bytes Schrick-Noah_MPI-Tasking.tex | 18 +++++++++- 6 files changed, 107 insertions(+), 78 deletions(-) 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 92db5908584e55bdc301fb4d0d21f5cc6e1955d5..6e94690eaee83a9ccde3a86ab8804498be42011d 100644 GIT binary patch delta 21280 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 delta 18282 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 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.