From 872fa5d1da1f99144cc7399dab7c476fdf8e8715 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ma=C3=ABl=20Madon?= <mael.madon@irit.fr>
Date: Wed, 26 Oct 2022 13:48:38 +0200
Subject: [PATCH] added description, examples and instructions in the README

---
 README.md              |  34 +++++++++++++++++++++++++++++++++-
 example_4_sessions.png | Bin 0 -> 16813 bytes
 2 files changed, 33 insertions(+), 1 deletion(-)
 create mode 100644 example_4_sessions.png

diff --git a/README.md b/README.md
index 36b26ed..662c90c 100644
--- a/README.md
+++ b/README.md
@@ -1 +1,33 @@
-Scripts and data to decompose an input workload into user sessions.
\ No newline at end of file
+# swf2sessions
+Python script to read a workload trace in the [Standard Workload Format](https://www.cs.huji.ac.il/labs/parallel/workload/swf.html) (SWF), decompose it into user sessions and store the results in the Session Annotated Batsim JSON format (SABjson).
+
+## What is a session?
+The idea behind this decomposition is to keep the *logic* of user submissions rather than the exact submission times. For example, in the image below, the workload has been split into 4 sessions following the "Arrival" delimitation approach:
+
+![diagram](example_4_sessions.png)
+
+- Job1 and job2 belong to the same session because their inter-arrival time is lower than a threshold value (here: 60 minutes). 
+- Job3, however, started a new session. 
+- Session4 *depends on* sessions 2 and 3 because its first job was submitted after the terminaison of all jobs in sessions 2 and 3. 
+- Session3 *depends on* session1, but not on session2.
+
+
+
+## Usage
+You need python3 installed on your machine. 
+
+To run the session decomposition on the workload `workloads/example.swf` illustrated above, with "Arrival" delimitation approach and a threshold of 60 minutes:
+
+```terminal
+python3 swf2sessions.py -at 60 workloads/example.swf out/
+```
+
+For more documentation, see: `python3 swf2sessions.py -h`
+
+## Tests
+Some integration tests have been written for this script, and are stored in the `test/` folder. To run them on your machine, you need to install pytest and launch it at the root of the project:
+
+```terminal
+pip3 install pytest
+pytest
+```
\ No newline at end of file
diff --git a/example_4_sessions.png b/example_4_sessions.png
new file mode 100644
index 0000000000000000000000000000000000000000..0700bd216feec0c1d582e47b0dd10aa3bb21ff26
GIT binary patch
literal 16813
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
CB$Frr

literal 0
HcmV?d00001

-- 
GitLab