From 7fc9591ed7564cfdb079acdc277a0e79dc5c6891 Mon Sep 17 00:00:00 2001 From: NikolajDanger Date: Sat, 27 May 2023 13:31:27 +0200 Subject: [PATCH] :sparkles: --- bachelor-project-nikolaj.pdf | Bin 238276 -> 239054 bytes bachelor-project-nikolaj.tex | 15 +++++++++------ 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/bachelor-project-nikolaj.pdf b/bachelor-project-nikolaj.pdf index a12a54ae28dc433290eb46da9e95a6e158d80683..aefa1f2650e5f4d9372fd51983fc9e321cf0e1ef 100644 GIT binary patch delta 17021 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 delta 16252 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 diff --git a/bachelor-project-nikolaj.tex b/bachelor-project-nikolaj.tex index 034a120..0f08e6c 100644 --- a/bachelor-project-nikolaj.tex +++ b/bachelor-project-nikolaj.tex @@ -34,14 +34,15 @@ \textit{Scientific Workflow Management Systems} (SWMSs) are an essential tool for automating, managing, and executing complex scientific processes involving large volumes of data and computational tasks\footnote{citation?}. Traditional SWMSs employ a linear sequential approach, in which tasks are performed in a pre-defined order, as defined by the workflow. While this linear method is suitable for certain applications, it might not always be the best choice: processing sequentially can prove inefficient in cases where the next step of the process should adapt to the previous one. For these use-cases a dynamic scheduler is required, of which \textit{Managing Event Oriented Workflows}\autocite{DavidMEOW} (MEOW) is one. \begin{tcolorbox}[colback=lightgray!30!white] - Expand on DAGs' inability to adapt + Expand on DAGs' inability to adapt. Plagiarize David's thesis. \end{tcolorbox} - MEOW employs an event-based scheduler, in which jobs are performed non-linearly, triggered based on events\footnote{citation?}. By dynamically adapting the execution order based on the outcomes of previous tasks or external factors, MEOW provides a more efficient and flexible solution for processing large volumes of experimental data\footnote{citation?}. + MEOW employs an event-based scheduler, in which jobs are performed non-linearly (\textbf{Better word here}), triggered based on events\footnote{citation?}. By dynamically adapting the execution order based on the outcomes of previous tasks or external factors, MEOW provides a more efficient and flexible solution for processing large volumes of experimental data\footnote{citation?}. \begin{tcolorbox}[colback=lightgray!30!white] \begin{itemize} + \item Expand on what "efficient" is \item What work am I doing on MEOW? \item How did it go? \item Introduce the concept of network events. @@ -55,13 +56,13 @@ While file events work well as a trigger on their own, there are several scenarios where a different trigger would be preferred or even required, especially when dealing with distributed systems or remote operations. To address these shortcomings and further enhance MEOW's capabilities, the integration of network event triggers would provide significant benefits in several key use-cases. - Firstly, network event triggers would allow for manual triggering of jobs remotely, without the need for direct access to the monitored files. This is particularly useful in scenarios where human intervention or decision-making is required before proceeding with the subsequent steps in a workflow. While it is possible to manually trigger job using file events by making changes to the monitored directories, this might lead to an already running job accessing the files at the same time, which could cause problems with data integrity. + Firstly, network event triggers would allow for manual triggering of jobs remotely, without the need for direct access to the monitored files. This is particularly useful in human-in-the-loop scenarios, where human intervention or decision-making is required before proceeding with the subsequent steps in a workflow. While it is possible to manually trigger job using file events by making changes to the monitored directories, this might lead to an already running job accessing the files at the same time, which could cause problems with data integrity. - Secondly, incorporating network event triggers would facilitate seamless communication between parallel runners, ensuring that tasks can efficiently exchange information and synchronize their progress. + Secondly, incorporating network event triggers would facilitate seamless communication between parallel runners, ensuring that tasks can efficiently exchange information and updates on their progress, allowing for a better perspective on the whole workflow, greatly improving visibility and control. Finally, extending MEOW's event-based scheduler to support network event triggers would enable the simple and efficient exchange of data between workflows running on different machines. This feature is particularly valuable in distributed computing environments, where data processing tasks are often split across multiple systems to maximize resource utilization and minimize latency. - Integrating network event triggers into MEOW would provide an advantage specifically in the context of heterogeneous workflows, which incorporate a mix of different tasks running on diverse computing environments. By their nature, these workflows can involve tasks running on different systems, potentially even in different physical locations, which need to exchange data or coordinate their progress. Currently, MEOW's reliance on local file events as triggers can be a limiting factor in these scenarios. Network event triggers offer a powerful solution to this challenge. They can not only handle tasks running across different machines, but also dynamically adapt to the changing requirements of a heterogeneous workflow, such as triggering new tasks based on the results of remote computations. Thus, the addition of network event triggers is a significant step in enhancing MEOW's already robust handling of heterogeneous workflows, bolstering its utility in today's diverse and distributed computing landscape. + Integrating network event triggers into MEOW would provide an advantage specifically in the context of heterogeneous workflows, which incorporate a mix of different tasks running on diverse computing environments. By their nature, these workflows can involve tasks running on different systems, potentially even in different physical locations, which need to exchange data or coordinate their progress. In the figure below, an example heterogeneous workflow is presented. \begin{figure}[H] \begin{center} @@ -70,6 +71,8 @@ \caption{An example of a heterogeneous workflow} \end{figure} + The example workflow requires several "halting-points", in which data should be transferred between the instrument, the instrument storage, centralized storage, High Performance Computing (HPC) resources, and a human interaction point. Network events can, for the reasons outlined earlier in the section, be used to prevent the workflow from halting when these points are reached. + \subsection{Background} \subsubsection{The structure of MEOW} @@ -81,7 +84,7 @@ \begin{center} \includegraphics[width=0.6\textwidth]{src/monitor.png} \end{center} - \caption{The monitor's role in MEOW's event-based system.} + \caption{\textbf{Redo this to fit with the current version.} The monitor's role in MEOW's event-based system.} \end{figure} \begin{tcolorbox}[colback=blue!30!white]