From c9dc83510f128d1568455ba175e0f51caedf14af Mon Sep 17 00:00:00 2001 From: NikolajDanger Date: Thu, 6 Apr 2023 00:03:50 +0200 Subject: [PATCH] :sparkles: --- .vscode/settings.json | 5 ++ bachelor-project.pdf | Bin 23661 -> 42441 bytes bachelor-project.tex | 107 +++++++++++++++++++++++++----------------- 3 files changed, 70 insertions(+), 42 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..0504c2d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "SWMSs" + ] +} \ No newline at end of file diff --git a/bachelor-project.pdf b/bachelor-project.pdf index d3ae7e59e0f0975ee9bbd2ef886f7978036ad723..c42561fc8d72ebc0f555f038036936156207c2b0 100644 GIT binary patch literal 42441 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 E7fJ(LGXMYp literal 23661 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 P0N?>)FfzVXk;V8g5xF~q diff --git a/bachelor-project.tex b/bachelor-project.tex index c3baa4b..3da7768 100644 --- a/bachelor-project.tex +++ b/bachelor-project.tex @@ -1,7 +1,10 @@ -\documentclass[a4paper]{article} +\documentclass[a4paper,twocolumn]{article} \usepackage[margin=1in]{geometry} +\usepackage[most]{tcolorbox} +\usepackage{xcolor} \usepackage{fancyhdr} % for headers -\usepackage[citestyle=verbose-ibid, backend=biber, autocite=footnote]{biblatex} % Footnote references. Use autocite{}. +% \usepackage[citestyle=verbose-ibid, backend=biber, autocite=footnote]{biblatex} % Footnote references. Use autocite{}. +\usepackage{biblatex} % --- Configuration --- @@ -15,68 +18,88 @@ % \rhead{\thepage} % \fancyheadoffset{0.005\textwidth} +\setlength{\parskip}{5pt} + \begin{document} \section{Abstract} - \textit{Explains briefly the paper and what it does.} + This paper... + \begin{tcolorbox}[colback=lightgray!30!white] + Explain briefly the paper and what it does. + \end{tcolorbox} \section{Introduction} - \textit{Introduce the scope.} - \begin{itemize} - \item Event-based scheduling as a concept \begin{itemize} - \item Why is it useful? - \end{itemize} - \item Network events and REST APIs as a concept \begin{itemize} - \item - \end{itemize} - \end{itemize} + \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 some processes can be done in parallel, or where the next step 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. + + 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?}. + + + \begin{tcolorbox}[colback=lightgray!30!white] + What else should be included in the introduction? + \end{tcolorbox} \subsection{Problem} - \textit{Something about the MEOW monitor, and expanding it. Probably also why it would be a good idea(?).} - \begin{itemize} - \item Why \texttt{MEOW} needs it \begin{itemize} - \item Further expansion of possibilities with the system - \end{itemize} - \end{itemize} + In its current implementation, MEOW is able to trigger jobs based on changes to monitored files. This covers a wide range of scenarios, specifically where the data processing workflow involves the creation, modification, or removal of files. By monitoring file events, MEOW's event-based scheduler can dynamically execute tasks as soon as the required conditions are met, ensuring efficient and timely processing of the data. + + 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 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. + + Secondly, incorporating network event triggers would facilitate seamless communication between parallel jobs, ensuring that tasks can efficiently exchange information and synchronize their progress. + + 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. By leveraging network event triggers, MEOW would be better equipped to manage complex workflows in these environments, ensuring seamless integration and streamlined data processing \subsection{Background} - \textit{Explaining the existing code and what it does and why. Also modules used and other important stuff to know.} + \subsubsection{The structure of MEOW} + The MEOW event-based scheduler has three main parts: \textit{monitors}, \textit{handlers}, and \textit{the conductor}. - \begin{itemize} - \item General \texttt{MEOW\_BASE} structure: \begin{itemize} - \item Monitors check if patterns are triggered \begin{itemize} - \item Patterns are triggered by an event. Currently only file event triggers are implemented. - \end{itemize} - \item Handlers perform recipes \begin{itemize} - \item Recipes are actions that are taken when triggered. python code can be run as a recipe. - \end{itemize} - \item The conductor handles the job queue of rules \begin{itemize} - \item Rules combine patterns and recipes (When this pattern is triggered, perform this recipe). - \end{itemize} - \end{itemize} - \item Specific (but not too granular) implementation details of \texttt{MEOW\_BASE}. \begin{itemize} - \item Class structure - \end{itemize} - \item Other important stuff to know - \end{itemize} + Monitors monitor for triggering events. They are initialized with a number of \textit{patterns}, which describe the triggering event. When a pattern's triggering event occurs, the monitor signals to the conductor that the pattern has been triggered. + + Handlers perform actions and jobs on behalf of the scheduler. They are initialized with a number of \textit{recipes}, which describe the action to be taken. The handler starts a job when signal to do so by the conductor. + + The conductor handles the jobs queue. It is initialized with a number of rules, which a pattern paired with a recipe. When a monitor sends it a triggered pattern, the rules are checked for that pattern. If one or more rules contain that pattern, the corresponding recipes are triggered in their handler. + + \subsubsection{The \texttt{meow\_base} codebase} + \begin{tcolorbox}[colback=lightgray!30!white] + Specific (but not too granular) implementation details of \texttt{meow\_base}. + \end{tcolorbox} \section{Method} - \textit{Explaining the code I wrote and why I made those choices.} + \begin{tcolorbox}[colback=lightgray!30!white] + Explain the code I wrote and why I made those choices. + + \begin{itemize} + \item The \texttt{socket} library + \item Expanding on existing code, reusing boiler-plate code + \item Test-driven development + \item Experiments with triggering on packet \begin{itemize} + \item Removes the ability to send arbitrary data + \end{itemize} + \end{itemize} + \end{tcolorbox} \section{Results} - \textit{Does it work? How well?} + \begin{tcolorbox}[colback=lightgray!30!white] + Does it work? How well? + \end{tcolorbox} - \subsection{Testing} + % \subsection{Testing} \subsection{Discussion} - \textit{With the hindsight of the results, what could I have done better?} + \begin{tcolorbox}[colback=lightgray!30!white] + With the hindsight of the results, what could I have done better? + \end{tcolorbox} \section{Future Work} - \textit{What should someone do if they want to fix my mistakes, or expand on them further.} + \begin{tcolorbox}[colback=lightgray!30!white] + What should someone do if they want to fix my mistakes, or expand on them further. + \end{tcolorbox} \section{Conclusion} - \textit{Did I succeed in what I wanted to do?} + \begin{tcolorbox}[colback=lightgray!30!white] + Did I succeed in what I wanted to do? + \end{tcolorbox} \newpage \appendix