From a1bd11a4470a28d98ae65a1b0ca049dddf7304d9 Mon Sep 17 00:00:00 2001 From: Kendal Date: Mon, 9 Jun 2025 14:55:58 -0500 Subject: [PATCH 01/33] my initial comment --- Cromer/README.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 Cromer/README.md diff --git a/Cromer/README.md b/Cromer/README.md new file mode 100644 index 0000000..95d09f2 --- /dev/null +++ b/Cromer/README.md @@ -0,0 +1 @@ +hello world \ No newline at end of file From 93a765d9d7f845bf203ee70f7f61d214e5676c8a Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Mon, 9 Jun 2025 14:57:49 -0500 Subject: [PATCH 02/33] Update README.md add one line --- Cromer/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Cromer/README.md b/Cromer/README.md index 95d09f2..0eddeab 100644 --- a/Cromer/README.md +++ b/Cromer/README.md @@ -1 +1,2 @@ -hello world \ No newline at end of file +hello world +goodbye From fc060a64cbf8f73b3f69cee40bf2abb8796c3815 Mon Sep 17 00:00:00 2001 From: Kendal Date: Mon, 9 Jun 2025 16:01:22 -0500 Subject: [PATCH 03/33] Restart: preparing to update README with correct instructions --- Cromer/README.md | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/Cromer/README.md b/Cromer/README.md index 0eddeab..fb72038 100644 --- a/Cromer/README.md +++ b/Cromer/README.md @@ -1,2 +1,42 @@ + + +# 🧩 My First GitHub Project + hello world goodbye + +This is a test project to play around with GitHub, learn version control, and practice pushing code, editing files, and writing READMEs. + + +## 🚀 Project Purpose + +This repo is for experimenting with: + +- `git init`, `git add`, `git commit`, `git push` +- Creating branches and pull requests +- Editing files directly on GitHub +- Writing clean and fun documentation + +--- + +## 💻 Getting Started + +To clone and run this project locally: + +```bash +git clone https://github.com/kendalcoder/summer2025.git +cd Cromer +python main.py + + +# main.py +```python +from sklearn.datasets import load_iris +from sklearn.tree import DecisionTreeClassifier + +iris = load_iris() +model = DecisionTreeClassifier() +model.fit(iris.data, iris.target) +print("Model trained. Accuracy:", model.score(iris.data, iris.target)) +``` + From 76d39d8b11c3574a4ccffdb695e88eed79c80024 Mon Sep 17 00:00:00 2001 From: Kendal Date: Mon, 9 Jun 2025 16:19:06 -0500 Subject: [PATCH 04/33] Update README with correct instructions --- Cromer/README.md | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Cromer/README.md b/Cromer/README.md index fb72038..ad7a8e4 100644 --- a/Cromer/README.md +++ b/Cromer/README.md @@ -1,10 +1,6 @@ - # 🧩 My First GitHub Project -hello world -goodbye - This is a test project to play around with GitHub, learn version control, and practice pushing code, editing files, and writing READMEs. From eb594de9947806481b4219a9dcb4dfcd37ef2a77 Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Tue, 10 Jun 2025 13:33:32 -0500 Subject: [PATCH 05/33] todays task --- Cromer/Daily Blog/Week 2 | 0 Cromer/Daily Blog/Week 3 | 0 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 Cromer/Daily Blog/Week 2 create mode 100644 Cromer/Daily Blog/Week 3 diff --git a/Cromer/Daily Blog/Week 2 b/Cromer/Daily Blog/Week 2 new file mode 100644 index 0000000..e69de29 diff --git a/Cromer/Daily Blog/Week 3 b/Cromer/Daily Blog/Week 3 new file mode 100644 index 0000000..e69de29 From 11631e3b93bd2fa3aad8f2b9796c24b633e09d64 Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Tue, 10 Jun 2025 14:37:59 -0500 Subject: [PATCH 06/33] daily task --- Cromer/Daily Blog/Week 2 | 7 +++++++ Edge_Scheduler_Sim/main.py | 0 Edge_Scheduler_Sim/scheduler.py | 0 Edge_Scheduler_Sim/task_A.py | 0 Edge_Scheduler_Sim/task_B.py | 0 Edge_Scheduler_Sim/task_C.py | 0 6 files changed, 7 insertions(+) create mode 100644 Edge_Scheduler_Sim/main.py create mode 100644 Edge_Scheduler_Sim/scheduler.py create mode 100644 Edge_Scheduler_Sim/task_A.py create mode 100644 Edge_Scheduler_Sim/task_B.py create mode 100644 Edge_Scheduler_Sim/task_C.py diff --git a/Cromer/Daily Blog/Week 2 b/Cromer/Daily Blog/Week 2 index e69de29..509ae62 100644 --- a/Cromer/Daily Blog/Week 2 +++ b/Cromer/Daily Blog/Week 2 @@ -0,0 +1,7 @@ +## Week 2 +## Tuesday June 10th + +- 'Created several python files to start a simple job scheduler system' +- 'created the folder with 5 initial files' +- 'started working on starter code for the scheduler file and task' + diff --git a/Edge_Scheduler_Sim/main.py b/Edge_Scheduler_Sim/main.py new file mode 100644 index 0000000..e69de29 diff --git a/Edge_Scheduler_Sim/scheduler.py b/Edge_Scheduler_Sim/scheduler.py new file mode 100644 index 0000000..e69de29 diff --git a/Edge_Scheduler_Sim/task_A.py b/Edge_Scheduler_Sim/task_A.py new file mode 100644 index 0000000..e69de29 diff --git a/Edge_Scheduler_Sim/task_B.py b/Edge_Scheduler_Sim/task_B.py new file mode 100644 index 0000000..e69de29 diff --git a/Edge_Scheduler_Sim/task_C.py b/Edge_Scheduler_Sim/task_C.py new file mode 100644 index 0000000..e69de29 From a53969a821c3a7d8dbdab84e451b862ebecce14b Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Tue, 10 Jun 2025 14:50:02 -0500 Subject: [PATCH 07/33] initial code --- Edge_Scheduler_Sim/main.py | 4 ++++ Edge_Scheduler_Sim/scheduler.py | 11 +++++++++++ Edge_Scheduler_Sim/task_A.py | 6 ++++++ Edge_Scheduler_Sim/task_B.py | 6 ++++++ Edge_Scheduler_Sim/task_C.py | 7 +++++++ 5 files changed, 34 insertions(+) diff --git a/Edge_Scheduler_Sim/main.py b/Edge_Scheduler_Sim/main.py index e69de29..189a2f9 100644 --- a/Edge_Scheduler_Sim/main.py +++ b/Edge_Scheduler_Sim/main.py @@ -0,0 +1,4 @@ +# This is the main entry point for the Edge Scheduler Simulation. +# It initializes the scheduler and registers tasks to be executed. +# Edge_Scheduler_Sim/main.py + diff --git a/Edge_Scheduler_Sim/scheduler.py b/Edge_Scheduler_Sim/scheduler.py index e69de29..a8563f3 100644 --- a/Edge_Scheduler_Sim/scheduler.py +++ b/Edge_Scheduler_Sim/scheduler.py @@ -0,0 +1,11 @@ +class Scheduler: + def __init__(self): + self.tasks = [] + + def register_task(self, name, func): + self.tasks.append((name, func)) + + def run_all(self): + for name, func in self.tasks: + print(f"Running task: {name}") + func() diff --git a/Edge_Scheduler_Sim/task_A.py b/Edge_Scheduler_Sim/task_A.py index e69de29..c82f114 100644 --- a/Edge_Scheduler_Sim/task_A.py +++ b/Edge_Scheduler_Sim/task_A.py @@ -0,0 +1,6 @@ +import time + +def run_task_a(): + print("Task A started") + time.sleep(1) + print("Task A completed") diff --git a/Edge_Scheduler_Sim/task_B.py b/Edge_Scheduler_Sim/task_B.py index e69de29..c19cd93 100644 --- a/Edge_Scheduler_Sim/task_B.py +++ b/Edge_Scheduler_Sim/task_B.py @@ -0,0 +1,6 @@ +import time + +def run_task_b(): + print("Task B started") + time.sleep(2) + print("Task B completed") diff --git a/Edge_Scheduler_Sim/task_C.py b/Edge_Scheduler_Sim/task_C.py index e69de29..3bceda8 100644 --- a/Edge_Scheduler_Sim/task_C.py +++ b/Edge_Scheduler_Sim/task_C.py @@ -0,0 +1,7 @@ +import time + +def run_task_c(): + print("Task C started") + time.sleep(1.5) + print("Task C completed") + From 69ba990237d86f623cfe840814326144109854fa Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Tue, 10 Jun 2025 15:01:36 -0500 Subject: [PATCH 08/33] initial code for main --- Edge_Scheduler_Sim/main.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Edge_Scheduler_Sim/main.py b/Edge_Scheduler_Sim/main.py index 189a2f9..b401f5f 100644 --- a/Edge_Scheduler_Sim/main.py +++ b/Edge_Scheduler_Sim/main.py @@ -2,3 +2,16 @@ # It initializes the scheduler and registers tasks to be executed. # Edge_Scheduler_Sim/main.py + +from scheduler import Scheduler +from task_a import run_task_a +from task_b import run_task_b +from task_c import run_task_c + +scheduler = Scheduler() +scheduler.register_task("Task A", run_task_a) +scheduler.register_task("Task B", run_task_b) +scheduler.register_task("Task C", run_task_c) + +scheduler.run_all() + From 83ad4a9df57fbfbc644c62b0da02db94a94c26f1 Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Tue, 10 Jun 2025 15:16:40 -0500 Subject: [PATCH 09/33] Update task_A.py --- Edge_Scheduler_Sim/task_A.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Edge_Scheduler_Sim/task_A.py b/Edge_Scheduler_Sim/task_A.py index c82f114..8b13789 100644 --- a/Edge_Scheduler_Sim/task_A.py +++ b/Edge_Scheduler_Sim/task_A.py @@ -1,6 +1 @@ -import time -def run_task_a(): - print("Task A started") - time.sleep(1) - print("Task A completed") From 88abbf0241bd51e05b44699ae510e7bd1c5eae46 Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Tue, 10 Jun 2025 15:17:18 -0500 Subject: [PATCH 10/33] Update task_B.py --- Edge_Scheduler_Sim/task_B.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Edge_Scheduler_Sim/task_B.py b/Edge_Scheduler_Sim/task_B.py index c19cd93..8b13789 100644 --- a/Edge_Scheduler_Sim/task_B.py +++ b/Edge_Scheduler_Sim/task_B.py @@ -1,6 +1 @@ -import time -def run_task_b(): - print("Task B started") - time.sleep(2) - print("Task B completed") From 3f8467056fbf5162916d9757ce526eeb0abda448 Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Tue, 10 Jun 2025 15:18:03 -0500 Subject: [PATCH 11/33] Update task_C.py --- Edge_Scheduler_Sim/task_C.py | 6 ------ 1 file changed, 6 deletions(-) diff --git a/Edge_Scheduler_Sim/task_C.py b/Edge_Scheduler_Sim/task_C.py index 3bceda8..8b13789 100644 --- a/Edge_Scheduler_Sim/task_C.py +++ b/Edge_Scheduler_Sim/task_C.py @@ -1,7 +1 @@ -import time - -def run_task_c(): - print("Task C started") - time.sleep(1.5) - print("Task C completed") From eabd0c5c20f1e717fc959ffb38fb23ea80cea684 Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Tue, 10 Jun 2025 15:18:32 -0500 Subject: [PATCH 12/33] Update main.py --- Edge_Scheduler_Sim/main.py | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/Edge_Scheduler_Sim/main.py b/Edge_Scheduler_Sim/main.py index b401f5f..189a2f9 100644 --- a/Edge_Scheduler_Sim/main.py +++ b/Edge_Scheduler_Sim/main.py @@ -2,16 +2,3 @@ # It initializes the scheduler and registers tasks to be executed. # Edge_Scheduler_Sim/main.py - -from scheduler import Scheduler -from task_a import run_task_a -from task_b import run_task_b -from task_c import run_task_c - -scheduler = Scheduler() -scheduler.register_task("Task A", run_task_a) -scheduler.register_task("Task B", run_task_b) -scheduler.register_task("Task C", run_task_c) - -scheduler.run_all() - From d333b1013486e7f47566d780e4a22ed2f4ffdeb3 Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Wed, 11 Jun 2025 15:46:21 -0500 Subject: [PATCH 13/33] day 2 --- Cromer/Daily Blog/Week 2 | 16 ++++++++++++++++ Cromer/Edge_Scheduler_Sim/main.py | 6 ++++++ .../Edge_Scheduler_Sim}/scheduler.py | 0 Cromer/Edge_Scheduler_Sim/task_A.py | 0 Cromer/Edge_Scheduler_Sim/task_B.py | 0 Cromer/Edge_Scheduler_Sim/task_C.py | 0 6 files changed, 22 insertions(+) create mode 100644 Cromer/Edge_Scheduler_Sim/main.py rename {Edge_Scheduler_Sim => Cromer/Edge_Scheduler_Sim}/scheduler.py (100%) create mode 100644 Cromer/Edge_Scheduler_Sim/task_A.py create mode 100644 Cromer/Edge_Scheduler_Sim/task_B.py create mode 100644 Cromer/Edge_Scheduler_Sim/task_C.py diff --git a/Cromer/Daily Blog/Week 2 b/Cromer/Daily Blog/Week 2 index 509ae62..c2cc935 100644 --- a/Cromer/Daily Blog/Week 2 +++ b/Cromer/Daily Blog/Week 2 @@ -5,3 +5,19 @@ - 'created the folder with 5 initial files' - 'started working on starter code for the scheduler file and task' +## Wed June 11, 2025 + +- 'Attended AI + Edge Computing Lecture' +- '* Prepared notes for Thursday’s meeting:' + - ' Initial prototype with `scheduler.py`, `task.py`, `main.py`, and added `node.py` ' + - ' Planning logging visibility (similar to `kube-scheduler-simulator`) ' + - 'Modular scheduler design with plugin-like architecture: filter, score, reserve, bind ' + Researched to implementand improve: + - 'Kubernetes plugin scheduler framework' + - 'YAML-based input simulations (pods/nodes)' + - 'Event logging best practices' + +- 'Practiced Python scheduling logic' +- Explored GitHub repo: [kube-scheduler-simulator](https://github.com/kubernetes-sigs/kube-scheduler-simulator) + +- 'Start problem statement,motivation , and hypothesis for presentation' \ No newline at end of file diff --git a/Cromer/Edge_Scheduler_Sim/main.py b/Cromer/Edge_Scheduler_Sim/main.py new file mode 100644 index 0000000..dc10c0a --- /dev/null +++ b/Cromer/Edge_Scheduler_Sim/main.py @@ -0,0 +1,6 @@ +# This is the main entry point for the Edge Scheduler Simulation. +# It initializes the scheduler and registers tasks to be executed. +# Edge_Scheduler_Sim/main.py + + + diff --git a/Edge_Scheduler_Sim/scheduler.py b/Cromer/Edge_Scheduler_Sim/scheduler.py similarity index 100% rename from Edge_Scheduler_Sim/scheduler.py rename to Cromer/Edge_Scheduler_Sim/scheduler.py diff --git a/Cromer/Edge_Scheduler_Sim/task_A.py b/Cromer/Edge_Scheduler_Sim/task_A.py new file mode 100644 index 0000000..e69de29 diff --git a/Cromer/Edge_Scheduler_Sim/task_B.py b/Cromer/Edge_Scheduler_Sim/task_B.py new file mode 100644 index 0000000..e69de29 diff --git a/Cromer/Edge_Scheduler_Sim/task_C.py b/Cromer/Edge_Scheduler_Sim/task_C.py new file mode 100644 index 0000000..e69de29 From e2c91efbb296511e50f32d22aa97beb4e78e4a57 Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Thu, 12 Jun 2025 14:16:57 -0500 Subject: [PATCH 14/33] add --- Cromer/Daily Blog/Week 2 | 4 +++- Cromer/Edge_Scheduler_Sim/node.py | 0 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 Cromer/Edge_Scheduler_Sim/node.py diff --git a/Cromer/Daily Blog/Week 2 b/Cromer/Daily Blog/Week 2 index c2cc935..93483aa 100644 --- a/Cromer/Daily Blog/Week 2 +++ b/Cromer/Daily Blog/Week 2 @@ -20,4 +20,6 @@ - 'Practiced Python scheduling logic' - Explored GitHub repo: [kube-scheduler-simulator](https://github.com/kubernetes-sigs/kube-scheduler-simulator) -- 'Start problem statement,motivation , and hypothesis for presentation' \ No newline at end of file +- 'Start problem statement,motivation , and hypothesis for presentation' + +## Thursday June 12, 2025 diff --git a/Cromer/Edge_Scheduler_Sim/node.py b/Cromer/Edge_Scheduler_Sim/node.py new file mode 100644 index 0000000..e69de29 From dad49422d5ddd280b85c15fa30583b591af3f4a9 Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Thu, 12 Jun 2025 14:49:33 -0500 Subject: [PATCH 15/33] day 3 --- Cromer/Daily Blog/Week 2 | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Cromer/Daily Blog/Week 2 b/Cromer/Daily Blog/Week 2 index 93483aa..699d88d 100644 --- a/Cromer/Daily Blog/Week 2 +++ b/Cromer/Daily Blog/Week 2 @@ -23,3 +23,34 @@ - 'Start problem statement,motivation , and hypothesis for presentation' ## Thursday June 12, 2025 + +- '**Tasks Completed:' + +- 'Met with the writing coach to discuss how to present and explain technical progress more clearly.' +- 'Continued reviewing how to improve the project code based on my research into scheduling simulations and Kubernetes schedulers.' +- 'Met with the team at 3 PM for regular project sync.' +- 'Met with Yongho after the team meeting to review the code I’ve written so far and discuss the next steps.' + +- 'Code Progress:' + +- 'Began implementing a new Node class (node.py) to simulate compute nodes (rpi, jetson, blade) for more realistic task execution modeling.' +- 'Planning to use this class to:' + - 'Simulate real node states' +- 'Monitor resource usage' +- 'Implement distributed task execution logic' +- 'Reset system state for multiple test runs' +- 'Inject simulated workloads' +- '*Adjusting the scheduler.py file so that it delegates execution to nodes, not the scheduler directly.' + + + +## Friday June 13, 2025 + - 'In Progress:' + - 'Continuing to explore modular scheduling based on plugin-style patterns inspired byKu bernetes (Filter, Score, Bind phases).' + - 'Preparing to integrate logging and metrics tracking for node performance and task flow.' +- 'Added functionality to:' +- 'Print how many times each task was executed' +- 'Track how many tasks each node handled' +- 'Log which node executed which task' + + From 38533f5a80b2f6fac71c41d80daaab90059eab1c Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Thu, 12 Jun 2025 16:14:56 -0500 Subject: [PATCH 16/33] code upload --- Cromer/Edge_Scheduler_Sim/main.py | 13 +++++++++++++ Cromer/Edge_Scheduler_Sim/task_A.py | 7 +++++++ Cromer/Edge_Scheduler_Sim/task_B.py | 8 ++++++++ Cromer/Edge_Scheduler_Sim/task_C.py | 8 ++++++++ 4 files changed, 36 insertions(+) diff --git a/Cromer/Edge_Scheduler_Sim/main.py b/Cromer/Edge_Scheduler_Sim/main.py index dc10c0a..4cd6f88 100644 --- a/Cromer/Edge_Scheduler_Sim/main.py +++ b/Cromer/Edge_Scheduler_Sim/main.py @@ -2,5 +2,18 @@ # It initializes the scheduler and registers tasks to be executed. # Edge_Scheduler_Sim/main.py +#Main.py + +from scheduler import Scheduler +from task_a import run_task_a +from task_b import run_task_b +from task_c import run_task_c + +scheduler = Scheduler() +scheduler.register_task("Task A", run_task_a) +scheduler.register_task("Task B", run_task_b) +scheduler.register_task("Task C", run_task_c) + +scheduler.run_all() diff --git a/Cromer/Edge_Scheduler_Sim/task_A.py b/Cromer/Edge_Scheduler_Sim/task_A.py index e69de29..75811b8 100644 --- a/Cromer/Edge_Scheduler_Sim/task_A.py +++ b/Cromer/Edge_Scheduler_Sim/task_A.py @@ -0,0 +1,7 @@ +#task_A.py + +import time +def run_task_a(): + print("Task A started") + time.sleep(1) + print("Task A completed") \ No newline at end of file diff --git a/Cromer/Edge_Scheduler_Sim/task_B.py b/Cromer/Edge_Scheduler_Sim/task_B.py index e69de29..96d65d1 100644 --- a/Cromer/Edge_Scheduler_Sim/task_B.py +++ b/Cromer/Edge_Scheduler_Sim/task_B.py @@ -0,0 +1,8 @@ +#task_B.py + +import time + +def run_task_b(): + print("Task B started") + time.sleep(2) + print("Task B completed") diff --git a/Cromer/Edge_Scheduler_Sim/task_C.py b/Cromer/Edge_Scheduler_Sim/task_C.py index e69de29..701e405 100644 --- a/Cromer/Edge_Scheduler_Sim/task_C.py +++ b/Cromer/Edge_Scheduler_Sim/task_C.py @@ -0,0 +1,8 @@ +#task_C.py + +import time + +def run_task_c(): + print("Task C started") + time.sleep(1.5) + print("Task C completed") \ No newline at end of file From 4d87bb5a84d11094b98259f5d111063a66eb44cf Mon Sep 17 00:00:00 2001 From: kendalcoder Date: Fri, 13 Jun 2025 14:45:20 -0500 Subject: [PATCH 17/33] new changes --- Cromer/Edge_Scheduler_Sim/README.md | 0 .../__pycache__/scheduler.cpython-313.pyc | Bin 0 -> 1021 bytes Cromer/Edge_Scheduler_Sim/main.py | 8 +++++++- Cromer/Edge_Scheduler_Sim/task_A.py | 8 ++++++-- Cromer/Edge_Scheduler_Sim/task_B.py | 2 +- Cromer/Edge_Scheduler_Sim/task_C.py | 4 ++-- Edge_Scheduler_Sim/main.py | 4 ---- Edge_Scheduler_Sim/task_A.py | 1 - Edge_Scheduler_Sim/task_B.py | 1 - Edge_Scheduler_Sim/task_C.py | 1 - 10 files changed, 16 insertions(+), 13 deletions(-) create mode 100644 Cromer/Edge_Scheduler_Sim/README.md create mode 100644 Cromer/Edge_Scheduler_Sim/__pycache__/scheduler.cpython-313.pyc delete mode 100644 Edge_Scheduler_Sim/main.py delete mode 100644 Edge_Scheduler_Sim/task_A.py delete mode 100644 Edge_Scheduler_Sim/task_B.py delete mode 100644 Edge_Scheduler_Sim/task_C.py diff --git a/Cromer/Edge_Scheduler_Sim/README.md b/Cromer/Edge_Scheduler_Sim/README.md new file mode 100644 index 0000000..e69de29 diff --git a/Cromer/Edge_Scheduler_Sim/__pycache__/scheduler.cpython-313.pyc b/Cromer/Edge_Scheduler_Sim/__pycache__/scheduler.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..58062fa1e5376ca89cac091fcba9a4b892188ebe GIT binary patch literal 1021 zcmZ`&&1(};5TCc3O}1&$kA&JbN?i(8Q=}`k@gPMHejuVbbO{s`9&5VYF5PV7d%Fic zd6M?v$0gWz~vRX55i9IyUJ6o>9kFVyI*D__=$V&TJtaI)K zUdVY|I*wXN&!{gshVTNu&CKp+Ugi7LQJ5Wf+E_rN%|!xSk9h!D%}2>`F83ZJv7vAI#@?Z7&Px}1f+TrCd`bAMh*Qt$A!hqE#8vkQehIM2^soc-~@Y|i*ZaAWrA6Rc!qNs+M(Cv zb{GopNfbJg^DZPe(Y^#tX#li%IgRiVdJ5C#dReAj`jb_)auQ8}^(uZ+l(0ZRJ4%+W duO|)O5a;o1P-zm4-zsD5uaalw9v}=7{sAJ-)GYu2 literal 0 HcmV?d00001 diff --git a/Cromer/Edge_Scheduler_Sim/main.py b/Cromer/Edge_Scheduler_Sim/main.py index 4cd6f88..ca8539b 100644 --- a/Cromer/Edge_Scheduler_Sim/main.py +++ b/Cromer/Edge_Scheduler_Sim/main.py @@ -2,7 +2,10 @@ # It initializes the scheduler and registers tasks to be executed. # Edge_Scheduler_Sim/main.py -#Main.py + + + +#main.py from scheduler import Scheduler from task_a import run_task_a @@ -17,3 +20,6 @@ scheduler.run_all() + + + diff --git a/Cromer/Edge_Scheduler_Sim/task_A.py b/Cromer/Edge_Scheduler_Sim/task_A.py index 75811b8..5c26778 100644 --- a/Cromer/Edge_Scheduler_Sim/task_A.py +++ b/Cromer/Edge_Scheduler_Sim/task_A.py @@ -1,7 +1,11 @@ -#task_A.py + +#task_a.py import time + def run_task_a(): print("Task A started") time.sleep(1) - print("Task A completed") \ No newline at end of file + print("Task A completed") + + diff --git a/Cromer/Edge_Scheduler_Sim/task_B.py b/Cromer/Edge_Scheduler_Sim/task_B.py index 96d65d1..0a4bd48 100644 --- a/Cromer/Edge_Scheduler_Sim/task_B.py +++ b/Cromer/Edge_Scheduler_Sim/task_B.py @@ -1,4 +1,4 @@ -#task_B.py +#task_b.py import time diff --git a/Cromer/Edge_Scheduler_Sim/task_C.py b/Cromer/Edge_Scheduler_Sim/task_C.py index 701e405..6e16daf 100644 --- a/Cromer/Edge_Scheduler_Sim/task_C.py +++ b/Cromer/Edge_Scheduler_Sim/task_C.py @@ -1,8 +1,8 @@ -#task_C.py +#task_c.py import time def run_task_c(): print("Task C started") time.sleep(1.5) - print("Task C completed") \ No newline at end of file + print("Task C completed") diff --git a/Edge_Scheduler_Sim/main.py b/Edge_Scheduler_Sim/main.py deleted file mode 100644 index 189a2f9..0000000 --- a/Edge_Scheduler_Sim/main.py +++ /dev/null @@ -1,4 +0,0 @@ -# This is the main entry point for the Edge Scheduler Simulation. -# It initializes the scheduler and registers tasks to be executed. -# Edge_Scheduler_Sim/main.py - diff --git a/Edge_Scheduler_Sim/task_A.py b/Edge_Scheduler_Sim/task_A.py deleted file mode 100644 index 8b13789..0000000 --- a/Edge_Scheduler_Sim/task_A.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Edge_Scheduler_Sim/task_B.py b/Edge_Scheduler_Sim/task_B.py deleted file mode 100644 index 8b13789..0000000 --- a/Edge_Scheduler_Sim/task_B.py +++ /dev/null @@ -1 +0,0 @@ - diff --git a/Edge_Scheduler_Sim/task_C.py b/Edge_Scheduler_Sim/task_C.py deleted file mode 100644 index 8b13789..0000000 --- a/Edge_Scheduler_Sim/task_C.py +++ /dev/null @@ -1 +0,0 @@ - From 82c98dcbb7e4c29d3e5d46b94be8a9c233fe3bcb Mon Sep 17 00:00:00 2001 From: kendalcoder Date: Fri, 13 Jun 2025 15:14:14 -0500 Subject: [PATCH 18/33] new code --- Cromer/Edge_Scheduler_Sim/main.py | 27 +++++++++++++------------- Cromer/Edge_Scheduler_Sim/node.py | 11 +++++++++++ Cromer/Edge_Scheduler_Sim/scheduler.py | 22 ++++++++++++++++++--- 3 files changed, 44 insertions(+), 16 deletions(-) diff --git a/Cromer/Edge_Scheduler_Sim/main.py b/Cromer/Edge_Scheduler_Sim/main.py index ca8539b..3e5152f 100644 --- a/Cromer/Edge_Scheduler_Sim/main.py +++ b/Cromer/Edge_Scheduler_Sim/main.py @@ -1,25 +1,26 @@ # This is the main entry point for the Edge Scheduler Simulation. # It initializes the scheduler and registers tasks to be executed. # Edge_Scheduler_Sim/main.py +# main.py - - - -#main.py - -from scheduler import Scheduler +from Scheduler import Scheduler from task_a import run_task_a from task_b import run_task_b from task_c import run_task_c +from node import Node + +# Create nodes +rpi = Node("rpi") +jetson = Node("jetson") +blade = Node("blade") + +nodes = [rpi, jetson, blade] -scheduler = Scheduler() +# Initialize scheduler with nodes +scheduler = Scheduler(nodes) scheduler.register_task("Task A", run_task_a) scheduler.register_task("Task B", run_task_b) scheduler.register_task("Task C", run_task_c) -scheduler.run_all() - - - - - +# Run all tasks +scheduler.run_all() \ No newline at end of file diff --git a/Cromer/Edge_Scheduler_Sim/node.py b/Cromer/Edge_Scheduler_Sim/node.py index e69de29..60b0967 100644 --- a/Cromer/Edge_Scheduler_Sim/node.py +++ b/Cromer/Edge_Scheduler_Sim/node.py @@ -0,0 +1,11 @@ + +# node.py + +class ComputeNode: + def __init__(self, name): + self.name = name + + def run_task(self, task_name, task_func): + print(f"[{self.name}] Running task: {task_name}") + task_func() + print(f"[{self.name}] Finished task: {task_name}") diff --git a/Cromer/Edge_Scheduler_Sim/scheduler.py b/Cromer/Edge_Scheduler_Sim/scheduler.py index a8563f3..7cd2e8f 100644 --- a/Cromer/Edge_Scheduler_Sim/scheduler.py +++ b/Cromer/Edge_Scheduler_Sim/scheduler.py @@ -1,11 +1,27 @@ + +# scheduler.py + +import random +from node import ComputeNode + class Scheduler: - def __init__(self): + def __init__(self, nodes): self.tasks = [] + self.task_counter = {} + + self.nodes = nodes # List of Node objects def register_task(self, name, func): self.tasks.append((name, func)) + self.task_counter[name] = self.task_counter.get(name, 0) def run_all(self): for name, func in self.tasks: - print(f"Running task: {name}") - func() + node = random.choice(self.nodes) + print(f"Assigning {name} to node {node.name}") + node.run_task(name, func) + self.task_counter[name] += 1 + + print("\nExecution Summary:") + for task, count in self.task_counter.items(): + print("{task}: executed {count} time(s)") \ No newline at end of file From 6913b82ab21822f957e47998670e248f2130ae2f Mon Sep 17 00:00:00 2001 From: kendalcoder Date: Fri, 13 Jun 2025 15:29:55 -0500 Subject: [PATCH 19/33] Final changges for code 2 --- .../__pycache__/node.cpython-313.pyc | Bin 0 -> 902 bytes .../__pycache__/scheduler.cpython-313.pyc | Bin 1021 -> 1789 bytes .../__pycache__/task_a.cpython-313.pyc | Bin 0 -> 452 bytes .../__pycache__/task_b.cpython-313.pyc | Bin 0 -> 452 bytes .../__pycache__/task_c.cpython-313.pyc | Bin 0 -> 456 bytes Cromer/Edge_Scheduler_Sim/main.py | 10 +++++----- Cromer/Edge_Scheduler_Sim/scheduler.py | 3 +-- 7 files changed, 6 insertions(+), 7 deletions(-) create mode 100644 Cromer/Edge_Scheduler_Sim/__pycache__/node.cpython-313.pyc create mode 100644 Cromer/Edge_Scheduler_Sim/__pycache__/task_a.cpython-313.pyc create mode 100644 Cromer/Edge_Scheduler_Sim/__pycache__/task_b.cpython-313.pyc create mode 100644 Cromer/Edge_Scheduler_Sim/__pycache__/task_c.cpython-313.pyc diff --git a/Cromer/Edge_Scheduler_Sim/__pycache__/node.cpython-313.pyc b/Cromer/Edge_Scheduler_Sim/__pycache__/node.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..44425e634efdbba43c13b9134f4611a8a19f8987 GIT binary patch literal 902 zcma)4&ubGw6n?Wml1a#hoN{`uwAJHY$9HYUX&cV1e92Ym~7Ie$tKS19_&GS z(u+bo1n-{G|0V|oUA%enCJo}%_cj}-Jvp%7d^_*W`|-V*=kqIo>(kpO#{~xPgMOCF zNXfi}WCA7F1{ccUvWm8_Na$&{-d_6Cjxmxo=eSMaIY{P$)LbTYS1W@wTpiJL4Vmeg zb|zju7!F2J=+%cE?3CQaLAH&}sD@6%7WS+`F?^aSr4Vsq?VY^MuBbR%gk35WAU#4I z&5`tjFcH$$rG?q!9Qg~(IIFG<(BouvU$K{%ilAqGR5 zAo4XKUPi5cYFQVe>q`~({lE)`LP&b*@)|;XT?iGnLcc9qVJQ6<_yUy>=degZElKJx z0eY2+lD~lqjhS1&GrCz@IFe7@#@P~E~&v?p0QS3Zs`5kpusq)-WL_JD;N{w$|j^8=TLieD|d%n(DFx#bla zhfEA3bv=ANTVO6_*$1v)w98pmt5jS%d22G4eUnzf%+41}u610mWqOq?i>kl5_9#>> z%k#a!vclBys+*Co2X}fA)TiWN==_HKdE(&W)!~LZT%WE_?5o!gGS`}!sYYh1nVD&1W}eB%kq5MiY5DTzAZOUp&3J3Wi*i93vWCExQ)`g&Xs zsybdu{SdpfK9HFI*mY`wSM_xhuAogH&93*(>Mr-XMSWe>1FzzaGsB2?=tph8SgnLH zXSM1%F2B^FvPL~Wpee{1sSc!67CMvQZmub>0COvW-onKM%14+g`=0%<|o zyzRkEcDWq(cQLl@Laf*~pn$6*m%qF5?TyWQ8*lwGF#Pr0S99BgKa6}ovNtdR93=_5^4?g)RY zab>2x99J451=_R&D028DQ>eb$uJScH4im^6hL!vw34+j4iIDt99u#Jd2q+%)FH=`z A<^TWy delta 587 zcmY*VQA-q26h7yUGmf)6>+CM&xaKwpS+fcexjmEyL4-+7;Iben)RNmKj^lF2eep$~ zVtuJ(kc5PM-Jj6EC@8GK9}z3jlh8S%D|q03GxvV?JNNs}sd?I;IWbKGs6O3$_I40= zGj`FY-5%I51{Ekk15K%hF zg{z^9abH;X--N7>iulT6aX3J*4Zp4owfmyaIEvHJSDYy{Kx#y|LhAI1wOX@T50*QM z9EjG1jYiZK6Ax6@Up>?7=?}(^aikA_*N69~_9uVpH>F9`CATa{+%C`~BU^cxEdaF0 zMl-j_=SfwtiW#^o%I7&9sERQtpR*1;zXp&3htj#i+sw?jf?y?RIGpjm(=)6#N1n(~kRPD|lJ+{Wx2RUZ~a`ju(y-&VtsmTeYxe=AIj@QB%KE7=Z}Jj|Ac}0E)XPw|3=Yj)c^nh diff --git a/Cromer/Edge_Scheduler_Sim/__pycache__/task_a.cpython-313.pyc b/Cromer/Edge_Scheduler_Sim/__pycache__/task_a.cpython-313.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2365905ef12089dd5082beb18703115f38bfea91 GIT binary patch literal 452 zcmYjOO-sW-5S?wdlGe70$NCk#VBP%Xv076dV;oA`(X0Utaj_l zk#T0o$i+x_OJ$vH=VEUXguWoz)RJO|!*P`GXc&m3D19NqcSzOBq-EVnfzld@vFG}h zjDtX622NLLL%4!Gf1Q z%JomayWsk3`?>x0@N%7LdtZDXOXM*NsQg(Y>WV29)rTZ{E10N-r&yscs{%*{#MEI^@F6baB(VQdT%&P$3b{}41an^c zDAzvu_M8`A+t2N{yO)d9+xgrB; z8wXuNHzzkCi=+3_lzMRAeRucW9b8f>6@je%(C$wueyL<-xr`)xMCM?D#jXIs%2fcF z#|-UT2|7+DOM^zJJh>;BLzksh0*lo%UWM*zGu-f1e;rTg!awbLgSM`EVDQdt=e8$@ z)n-*jJ&c6wEqDB0%yzSeGY&#uP|MKbe29Zl6!T~hh&V5OA;LFE)JWVg@1#I!4#mjr z`KFu%fxy~Xt!_4POw_z|Jz-l;U$_%rpluBTGosVBa~e+LB2Gs3GDY>wJh?n3c!UKn zyca7Ue1F09m)2A3RX$&*wS!N7h&pME94dV}h?|P3Di#Q0y%CJn!E@ZARQ*Ag34S!j PSh4|ZJK-8TN(cS`NKIQ- literal 0 HcmV?d00001 diff --git a/Cromer/Edge_Scheduler_Sim/main.py b/Cromer/Edge_Scheduler_Sim/main.py index 3e5152f..9ac4d0c 100644 --- a/Cromer/Edge_Scheduler_Sim/main.py +++ b/Cromer/Edge_Scheduler_Sim/main.py @@ -3,16 +3,16 @@ # Edge_Scheduler_Sim/main.py # main.py -from Scheduler import Scheduler +from scheduler import Scheduler from task_a import run_task_a from task_b import run_task_b from task_c import run_task_c -from node import Node +from node import ComputeNode # Create nodes -rpi = Node("rpi") -jetson = Node("jetson") -blade = Node("blade") +rpi = ComputeNode("rpi") +jetson = ComputeNode("jetson") +blade = ComputeNode("blade") nodes = [rpi, jetson, blade] diff --git a/Cromer/Edge_Scheduler_Sim/scheduler.py b/Cromer/Edge_Scheduler_Sim/scheduler.py index 7cd2e8f..dddbf6d 100644 --- a/Cromer/Edge_Scheduler_Sim/scheduler.py +++ b/Cromer/Edge_Scheduler_Sim/scheduler.py @@ -2,7 +2,6 @@ # scheduler.py import random -from node import ComputeNode class Scheduler: def __init__(self, nodes): @@ -24,4 +23,4 @@ def run_all(self): print("\nExecution Summary:") for task, count in self.task_counter.items(): - print("{task}: executed {count} time(s)") \ No newline at end of file + print(f"{task}: executed {count} time(s)") \ No newline at end of file From 6bb2e439603df867a0f198c3af7bc8a3aaeab1da Mon Sep 17 00:00:00 2001 From: kendalcoder Date: Fri, 13 Jun 2025 15:37:10 -0500 Subject: [PATCH 20/33] for new code --- Cromer/Edge_Scheduler_Sim/README.md | 80 +++++++++++++++++++++++++++++ 1 file changed, 80 insertions(+) diff --git a/Cromer/Edge_Scheduler_Sim/README.md b/Cromer/Edge_Scheduler_Sim/README.md index e69de29..aa7789a 100644 --- a/Cromer/Edge_Scheduler_Sim/README.md +++ b/Cromer/Edge_Scheduler_Sim/README.md @@ -0,0 +1,80 @@ +🧾 Project Overview + +This project simulates a basic task scheduling system designed to mimic how tasks are distributed and run on different types of computers in an edge computing environment. It models a simple scheduler that assigns tasks to various compute nodes, each representing a different kind of hardware device. + + +🧱 Components + + + +- main.py + +This is the main script that: + +Creates a Scheduler instance. +Registers 3 example tasks (Task A, Task B, and Task C). +Executes all tasks through the scheduler. + + + +- scheduler.py + +Defines the Scheduler class. +It: + +Stores all registered tasks. +Initializes 3 compute nodes, each representing a different kind of computer: +🧠 rpi – A Raspberry Pi, a small single-board computer commonly used in IoT. +⚡ jetson – An NVIDIA Jetson, designed for edge AI computing with GPUs. +💻 blade – A blade server, a powerful, rack-mounted machine used in data centers. + +When running tasks: +Randomly assigns each task to one of the three compute nodes. +Tells the node to run the task. +Tracks how many times each task is executed. + +Prints a summary of task executions at the end. + + + +- node.py + +Defines the ComputeNode class. Each node: + + + +Has a name (representing the type of computer it simulates). +Receives tasks from the scheduler. +Runs the task function and prints which node handled it. + + + +- task_a.py , task_b.py , task_c.py + +Each file contains a function that simulates a real task: + +run_task_a, run_task_b, and run_task_c simulate execution using time.sleep(). +They print start and completion messages for visibility. + + +- Output + +Assigned task 'Task A' to node 'jetson' +Node jetson is executing: Task A +Task A started +Task A completed + +Assigned task 'Task B' to node 'rpi' +Node rpi is executing: Task B +Task B started +Task B completed + +Assigned task 'Task C' to node 'blade' +Node blade is executing: Task C +Task C started +Task C completed + +=== Task Execution Summary === +Task A: 1 time(s) +Task B: 1 time(s) +Task C: 1 time(s) \ No newline at end of file From 591af427429987575e0da875acd1e0b0ff7ed672 Mon Sep 17 00:00:00 2001 From: kendalcoder Date: Fri, 13 Jun 2025 15:46:35 -0500 Subject: [PATCH 21/33] changes end of week --- Cromer/Daily Blog/Week 2 | 86 ++++++++++++++++++++-------------------- 1 file changed, 43 insertions(+), 43 deletions(-) diff --git a/Cromer/Daily Blog/Week 2 b/Cromer/Daily Blog/Week 2 index 699d88d..f84ac78 100644 --- a/Cromer/Daily Blog/Week 2 +++ b/Cromer/Daily Blog/Week 2 @@ -1,56 +1,56 @@ -## Week 2 -## Tuesday June 10th - -- 'Created several python files to start a simple job scheduler system' -- 'created the folder with 5 initial files' -- 'started working on starter code for the scheduler file and task' - -## Wed June 11, 2025 - -- 'Attended AI + Edge Computing Lecture' -- '* Prepared notes for Thursday’s meeting:' - - ' Initial prototype with `scheduler.py`, `task.py`, `main.py`, and added `node.py` ' - - ' Planning logging visibility (similar to `kube-scheduler-simulator`) ' - - 'Modular scheduler design with plugin-like architecture: filter, score, reserve, bind ' - Researched to implementand improve: - - 'Kubernetes plugin scheduler framework' - - 'YAML-based input simulations (pods/nodes)' - - 'Event logging best practices' - -- 'Practiced Python scheduling logic' +Week 2 +Tuesday June 10th + +- Created several python files to start a simple job scheduler system +- created the folder with 5 initial files +- started working on starter code for the scheduler file and task + +Wed June 11, 2025 + +- Attended AI + Edge Computing Lecture +- * Prepared notes for Thursday’s meeting: +- Initial prototype with `scheduler.py`, `task.py`, `main.py`, and added `node.py` +- Planning logging visibility (similar to `kube-scheduler-simulator`) +- 'Modular scheduler design with plugin-like architecture: filter, score, reserve, bind +- Researched to implementand improve: + - Kubernetes plugin scheduler framework + - YAML-based input simulations (pods/nodes) + - Event logging best practices + +- Practiced Python scheduling logic - Explored GitHub repo: [kube-scheduler-simulator](https://github.com/kubernetes-sigs/kube-scheduler-simulator) -- 'Start problem statement,motivation , and hypothesis for presentation' +- Start problem statement,motivation , and hypothesis for presentation -## Thursday June 12, 2025 +Thursday June 12, 2025 -- '**Tasks Completed:' +- **Tasks Completed: -- 'Met with the writing coach to discuss how to present and explain technical progress more clearly.' -- 'Continued reviewing how to improve the project code based on my research into scheduling simulations and Kubernetes schedulers.' -- 'Met with the team at 3 PM for regular project sync.' -- 'Met with Yongho after the team meeting to review the code I’ve written so far and discuss the next steps.' +- Met with the writing coach to discuss how to present and explain technical progress more clearly. +- Continued reviewing how to improve the project code based on my research into scheduling simulations and Kubernetes schedulers. +- Met with the team at 3 PM for regular project sync. +- Met with Yongho after the team meeting to review the code I’ve written so far and discuss the next steps. -- 'Code Progress:' +- Code Progress: -- 'Began implementing a new Node class (node.py) to simulate compute nodes (rpi, jetson, blade) for more realistic task execution modeling.' -- 'Planning to use this class to:' - - 'Simulate real node states' -- 'Monitor resource usage' -- 'Implement distributed task execution logic' -- 'Reset system state for multiple test runs' -- 'Inject simulated workloads' -- '*Adjusting the scheduler.py file so that it delegates execution to nodes, not the scheduler directly.' +- Began implementing a new Node class (node.py) to simulate compute nodes (rpi, jetson, blade) for more realistic task execution modeling. +- Planning to use this class to: +- Simulate real node states +- Monitor resource usage +- Implement distributed task execution logic +- Reset system state for multiple test runs +- Inject simulated workloads +- *Adjusting the scheduler.py file so that it delegates execution to nodes, not the scheduler directly. ## Friday June 13, 2025 - - 'In Progress:' - - 'Continuing to explore modular scheduling based on plugin-style patterns inspired byKu bernetes (Filter, Score, Bind phases).' - - 'Preparing to integrate logging and metrics tracking for node performance and task flow.' -- 'Added functionality to:' -- 'Print how many times each task was executed' -- 'Track how many tasks each node handled' -- 'Log which node executed which task' + - In Progress: + - Continuing to explore modular scheduling based on plugin-style patterns inspired byKu bernetes (Filter, Score, Bind phases). +- Preparing to integrate logging and metrics tracking for node performance and task flow. +- Added functionality to: +- Print how many times each task was executed +- Track how many tasks each node handled +- Log which node executed which task From cc688a5a0a32f92e216e9ac89b19ed1afb809d58 Mon Sep 17 00:00:00 2001 From: kendalcoder Date: Fri, 13 Jun 2025 15:47:29 -0500 Subject: [PATCH 22/33] end of week changes --- Cromer/Daily Blog/Week 2 | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/Cromer/Daily Blog/Week 2 b/Cromer/Daily Blog/Week 2 index f84ac78..59c1132 100644 --- a/Cromer/Daily Blog/Week 2 +++ b/Cromer/Daily Blog/Week 2 @@ -42,10 +42,8 @@ Thursday June 12, 2025 - Inject simulated workloads - *Adjusting the scheduler.py file so that it delegates execution to nodes, not the scheduler directly. - - -## Friday June 13, 2025 - - In Progress: + Friday June 13, 2025 + - In Progress: from the day before - Continuing to explore modular scheduling based on plugin-style patterns inspired byKu bernetes (Filter, Score, Bind phases). - Preparing to integrate logging and metrics tracking for node performance and task flow. - Added functionality to: @@ -53,4 +51,25 @@ Thursday June 12, 2025 - Track how many tasks each node handled - Log which node executed which task + Meeting +- Met with Yongho for progress check-in. + +Code Improvements +- ✅ Fixed initial import/module errors in scheduler setup. +- ✅ Enhanced scheduler system to: + 1. Track how many times each task was executed. + 2. Introduce a `Node` class to simulate compute nodes: `rpi`, `jetson`, and `blade`. + 3. Assign tasks to nodes dynamically — nodes now execute the tasks, not the scheduler. + 4. Log which node executes which task. + 5. Add execution summaries grouped by both task and node. + + Study / Research +- Read GitHub repositories related to **edge resource analysis** to explore real-world scheduler designs. +- Watched tutorials/videos to better understand edge computing task allocation patterns. + +Next Steps +- Expand node simulation to include resource capacity and load balancing. +- Look into logging task failures or retries. +- Possibly add threading to simulate parallel execution across nodes. + From 2854fe8f29750b9547609e4b426d13e6d265f3a7 Mon Sep 17 00:00:00 2001 From: KendalCoder Date: Fri, 20 Jun 2025 10:25:09 -0500 Subject: [PATCH 23/33] Update Week 3 --- Cromer/Daily Blog/Week 3 | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/Cromer/Daily Blog/Week 3 b/Cromer/Daily Blog/Week 3 index e69de29..28ab258 100644 --- a/Cromer/Daily Blog/Week 3 +++ b/Cromer/Daily Blog/Week 3 @@ -0,0 +1,25 @@ +Weekly Progress Log + +Monday June 16,2025 + • Watched Python tutorial videos to strengthen scripting skills. + • Conducted research on scheduler simulators for distributed systems. + • Began reviewing relevant GitHub repositories related to task scheduling and edge computing. + +Tuesday June 17,2025 + • Continued reading and analyzing GitHub repositories. + • Focused on understanding the logic and structure behind existing scheduler implementations. + • Attended Dr. Wilkie’s CS seminar on High Performance Computing (HPC), gaining insights into large-scale task scheduling and system efficiency. + + Wednesday June 18,2025 + • Participated in two academic seminars. + • Deepened understanding of repository logic and scheduling strategies through hands-on code reading. + +Thursday June 19,2025 + • Met with mentor in the morning to discuss project goals and roadmap. + • Set up Linux development environment on a laptop for code testing. + • Successfully ran the wiggle scheduler code; identified an error in an alternate scheduler implementation. + • Met with the project team in the afternoon for collaboration and planning. +Friday June 20, 2025 + • Revisited the scheduler code to reinforce understanding of its logic and structure. + • Took detailed notes on areas for improvement and potential refactoring. + • Prepared for the upcoming week by outlining next steps and identifying key focus areas. From 0abfb57201dd09393e4d2b71fde557b54833b149 Mon Sep 17 00:00:00 2001 From: Kendalcoder Date: Fri, 27 Jun 2025 09:28:37 -0500 Subject: [PATCH 24/33] week 4 daily blog --- Cromer/Daily Blog/Week 4 | 120 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 120 insertions(+) create mode 100644 Cromer/Daily Blog/Week 4 diff --git a/Cromer/Daily Blog/Week 4 b/Cromer/Daily Blog/Week 4 new file mode 100644 index 0000000..f173af3 --- /dev/null +++ b/Cromer/Daily Blog/Week 4 @@ -0,0 +1,120 @@ + +Weekly Log: Scheduler Integration and Optimization (Week of June 24) + + +Weekly deliverables + +Task 1: +Run and test simulation using Quick Start instructions + +Task 2-1: + Uncomment scheduler in mywaggle.yaml + +Task 2-2: + Fix bug in FairshareScheduler and demonstrate it running in simulation + +Task 3: + Integrate Henry’s dual descent scheduler from Colab link into the scheduler/ directory and run it with simulation + + + +Monday + +• Met with Yongho → Received this week’s deliverables + +• Completed: +• Passport Safety Training +• Section 101 Security Training +• Additional safety module +• Started: + +• Task 1: README.md Quick Start +• Ran, tested, and debugged simulation code +• Investigated bug in FairshareScheduler + + + +Tuesday + +• Worked on research journal: methodology & design notes +Focused on: + +• Fixing Fairshare bug: + + +# Old (error) + +cpu_usage = [node.metrics["cpu"] for node in nodes] + + +# Fixed: + +cpu_usage = [node.metrics.get("cpu", float(”inf”)) for node in nodes] + + +Had to fix errors to make code run : +• Installed missing packages (tensorboard) +eea971c8f87b5cf2e53c94398ccd6f773a16adfe +0080f1099258f363167f8bdc8ded18c1defcdcaf + +• Used --config flag to avoid manually selecting the YAML file every run: + +--config /home/kendal/edge_resource_analysis/simulation/kubernetes/mywaggle.yaml + + +Completed Task 2-2 → Working demonstration of FairshareScheduler with debugged logic + + + + +Wednesday + +• Moved Henry’s dual descent code into the scheduler/ directory (dual_node.py) + +• Installed cvxpy: + +Bash: pip install cvxpy + +• Fixed henry code for the dualnode.py : + 46b2a7c7a65af8114c42dca50a599d0c06d85433 + +• Learned: + +• cvxpy enables mathematical optimization in Python using variables, objectives, constraints + +• Attended a seminar (HPC focus) + +• Wrote prep notes for Thursday code explanation for the meeting + + + +Thursday + +• Morning: Met with mentor to review simulation logic and scheduler goals + +• Afternoon: Met with team + +• Reached out to Work with Henry to: + +• Clarify lambda format + +• Continue testing dual descent scheduler + +• Make centralized_solver.py runnable with simulation + +• Understand and get clarification on the output of the code match his that he ran and mine + + + + +Friday + +• Completed Task 3: Integrated and ran Henry’s scheduler in the simulation + +• Verified: It integrates with run.py +• CVXPY logic solves the problem and dual update works +• Reviewed SAGE documentation for formatting results: +https://www.anl.gov/mcs/Sage-MSRI-1 + +• Started working on next steps for my journal + From bdfb34cb19fe55cf3210a3e56f02680e367b5e0c Mon Sep 17 00:00:00 2001 From: Kendalcoder Date: Fri, 27 Jun 2025 09:30:12 -0500 Subject: [PATCH 25/33] week 4 daily blog --- Cromer/Daily Blog/Week 4 | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/Cromer/Daily Blog/Week 4 b/Cromer/Daily Blog/Week 4 index f173af3..fe22a72 100644 --- a/Cromer/Daily Blog/Week 4 +++ b/Cromer/Daily Blog/Week 4 @@ -40,15 +40,12 @@ Tuesday Focused on: • Fixing Fairshare bug: - +error line 10 # Old (error) - cpu_usage = [node.metrics["cpu"] for node in nodes] - # Fixed: - cpu_usage = [node.metrics.get("cpu", float(”inf”)) for node in nodes] From 56aa8586493f7556a9e5e936022968d5292f1550 Mon Sep 17 00:00:00 2001 From: Kendalcoder Date: Mon, 7 Jul 2025 11:06:30 -0500 Subject: [PATCH 26/33] Add weekly progress logs for Week 5 and Week 6, including metrics and visualizations --- Cromer/Daily Blog/Week5.md | 88 +++++++++++++++++++++++++++++++++++++ Cromer/Daily Blog/week 6.md | 24 ++++++++++ 2 files changed, 112 insertions(+) create mode 100644 Cromer/Daily Blog/Week5.md create mode 100644 Cromer/Daily Blog/week 6.md diff --git a/Cromer/Daily Blog/Week5.md b/Cromer/Daily Blog/Week5.md new file mode 100644 index 0000000..0aa4965 --- /dev/null +++ b/Cromer/Daily Blog/Week5.md @@ -0,0 +1,88 @@ +Weekly Progress Log – Scheduler Evaluation & Visualization (July 1–5, 2025) + +Weekly Focus: + + Extracting meaningful metrics from TensorBoard + Comparing performance between WaggleScheduler and FairshareScheduler + Fixing energy consumption reporting bugs + Building visualizations for clarity + Adapting Henry’s dual descent scheduler into simulation + + + + +Goals for this week + + +Task 1 +Convert TensorBoard logs into CSV for better metric visibility + +Task 2 +Add per-node statistics: mean energy, workload count, task time + +Task 3 +Compare all metrics across different schedulers + +Fixes +Address bug where TensorBoard showed energy=0 despite CPU usage + +Enhancement +Add support for visualizing and identifying scheduler results + +Research +Integrate Henrys dual_descent into new scheduler module + + +Monday + + 🛠 Bugfix: Fixed issue where TensorBoard reported 0 energy usage even with non-zero CPU. + subtask : bug fix 26c24d2a7f13a7f0fafd66713ecb27390a0f12b0 + + 🔧 Added new metrics lines to __init__() for energy tracking. + ✅ Simulation now records meaningful energy data. + 🧪 Verified both WaggleScheduler and FairshareScheduler logs generate usable CSVs. + + + + +Tuesday + + 🤝 Met with Henry to discuss dual descent scheduler integration. + 📈 Clarified expected output from dual_descent: + A matrix like: + [[0, 1], [1, 0], [0, 1]] → Each row = workload, column = node. + 🧠 Brainstormed how to pass simulation state to dual descent function. + 🧰 Began adapting simulation run to accept new dual-descent placement matrix. + + + + +Wednesday + Met with Yongho + ✅ Updated run.py line 103 to include total energy in TensorBoard logs. + 📊 TensorBoard now outputs energy correctly. + 🧠 Brainstormed visual identification for scheduler logs: + Current challenge: All logs look similar (over 30+), hard to trace which run = which scheduler. + Solution: Need clear naming/labeling for scheduler in TensorBoard or CSV. + + + +Thursday + + 🎨 Finished first version of visualization code: + Plots energy, task count, execution time per node. + + ✅ Task 2 completed: all metrics per node calculated. + ✅ Task 3 attempted: + CSV output works + ❌ Error: [ERROR] No scheduler data to compare. + Suspected cause: TensorBoard logs don’t differentiate waggle vs fairshare + + + 🔧 Fixed file path bugs that caused directory mismatch errors earlier. + 🧪 Now receives output files with task metrics per scheduler — working toward full comparison. + +my new working code +f5bbbf49b94c5a4feaf7fbb2faf3b11c91e38df7 + + diff --git a/Cromer/Daily Blog/week 6.md b/Cromer/Daily Blog/week 6.md new file mode 100644 index 0000000..93f0bff --- /dev/null +++ b/Cromer/Daily Blog/week 6.md @@ -0,0 +1,24 @@ +Weekly Progress Log – Scheduler Evaluation & Visualization (July 7-11 2025) + + + + + + + + + + + +Visual Results (WIP) + +Generated CSV: + + logs/WaggleScheduler_task_log.csv + logs/FairshareScheduler_task_log.csv + Comparison Output: + logs/scheduler_comparison_metrics.csv + Plotted: + mean_energy_comparison.png + num_tasks_comparison.png + avg_task_time_comparison.png \ No newline at end of file From 28fd5c388a72bd91eaa0584cb5aebc0a94c14a01 Mon Sep 17 00:00:00 2001 From: Kendalcoder Date: Mon, 14 Jul 2025 11:28:08 -0500 Subject: [PATCH 27/33] week 6 --- Cromer/Daily Blog/week 6.md | 100 ++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) diff --git a/Cromer/Daily Blog/week 6.md b/Cromer/Daily Blog/week 6.md index 93f0bff..d34ba45 100644 --- a/Cromer/Daily Blog/week 6.md +++ b/Cromer/Daily Blog/week 6.md @@ -1,11 +1,111 @@ Weekly Progress Log – Scheduler Evaluation & Visualization (July 7-11 2025) +Task this week +Continue Focus on visualization this week +Answer which one is better? +Waggle scheduler used less energy + CSV - data format + +compare that respect which one works better which one works worse + + +70% focus : + +Task 2: add more metrics about the statistics of the logs, for example mean energy consumption of each compute node, how many workloads (applications) did each node take, etc. + + +Task 3: get all the metrics we added in Task 2 against different schedulers. For example, run the simulation with WaggleScheduler, get all metrics, and change the scheduler to Fairshare and get metrics again. It will be interesting to compare the metrics between the schedulers and which one is better. + + + +30%: +Make Henry’s code like the other schedulers formats + + +Monday +Met with yongho + + + + +Tuesday + +Task 2: add more metrics about the statistics of the logs, for example mean energy consumption of each compute node, how many workloads (applications) did each node take, etc. + + +Finish working on visualization + +Start Make Henry’s code like the other schedulers formats + + +fix henry code +dfd18f186b64a0a09ec752335d72e25488440ec9 + + + + +Wednesday + +reformatted version of your DualDescent class in a style consistent with typical scheduler classes. + +Added docstrings and argument descriptions. + +• Renamed id to node_id to avoid Python built-in shadowing. + +• Moved the algorithm into a schedule() method (assuming your schedulers implement scheduling this way). + +• Added placeholder TODOs for stopcondition() and share() to clarify they need implementation. + +• Fixed while not self.stopcondition() (you want to loop until stopping condition). +• Consistent use of self. attributes. +• Proper numpy array shapes in initialization. +• Added comments consistent with your other schedul + + + + +Task 3: get all the metrics we added in Task 2 against different schedulers. For example, run the simulation with WaggleScheduler, get all metrics, and change the scheduler to Fairshare and get metrics again. It will be interesting to compare the metrics between the schedulers and which one is better. + + + +Prepare slides for meeting + +Update methodology and approach + +Work on results portion for presentation journal + + + + + +Thursday + +Morning Meeting +Evening meeting with yongho n northwestern team + + +TODOs: + +Under kubernetes/logs we want those directories with datetime to be datetime-"scheduler name" +By Updating TensorBoard class to accept a scheduler name and include it in the + +Fix csvexport.py + + + +Finalize writing results ( what I’ve learned) for my journal + + + + + +Friday: From 4b7cf2053b0e006215b43f6e2d652366a7b3fd99 Mon Sep 17 00:00:00 2001 From: Kendalcoder Date: Mon, 14 Jul 2025 12:24:13 -0500 Subject: [PATCH 28/33] Fix tensorboard.py and finalize results for journal; update visual presentation goals --- Cromer/Daily Blog/week 6.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/Cromer/Daily Blog/week 6.md b/Cromer/Daily Blog/week 6.md index d34ba45..06a0e5f 100644 --- a/Cromer/Daily Blog/week 6.md +++ b/Cromer/Daily Blog/week 6.md @@ -102,14 +102,12 @@ Fix csvexport.py Finalize writing results ( what I’ve learned) for my journal - - - Friday: +Fix tensorboarrd.py +7694c6a6ee21b4350a216cf899257cded380f27c - - +Final goal to show for presentation: Visual Results (WIP) Generated CSV: From 1433d59e4a319c731a8c57be84d65b415cb00f23 Mon Sep 17 00:00:00 2001 From: Kendalcoder Date: Mon, 14 Jul 2025 12:24:29 -0500 Subject: [PATCH 29/33] start week 7 journal --- Cromer/Daily Blog/Week7.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 Cromer/Daily Blog/Week7.md diff --git a/Cromer/Daily Blog/Week7.md b/Cromer/Daily Blog/Week7.md new file mode 100644 index 0000000..72c0ad2 --- /dev/null +++ b/Cromer/Daily Blog/Week7.md @@ -0,0 +1,18 @@ +July 14- 18 + +Final goal to show for presentation: +Visual Results (WIP) + +Generated CSV: + + logs/WaggleScheduler_task_log.csv + logs/FairshareScheduler_task_log.csv + Comparison Output: + logs/scheduler_comparison_metrics.csv + Plotted: + mean_energy_comparison.png + num_tasks_comparison.png + avg_task_time_comparison.png + + + \ No newline at end of file From f71a0e9fa68658023e2548ee9525223922df27d4 Mon Sep 17 00:00:00 2001 From: Kendalcoder Date: Wed, 30 Jul 2025 19:49:20 -0500 Subject: [PATCH 30/33] Enhance Week 7 journal with finalized metrics, output logs, and insights from scheduler analysis --- Cromer/Daily Blog/Week7.md | 101 ++++++++++++++++++++++++++++++++++++- 1 file changed, 100 insertions(+), 1 deletion(-) diff --git a/Cromer/Daily Blog/Week7.md b/Cromer/Daily Blog/Week7.md index 72c0ad2..d368736 100644 --- a/Cromer/Daily Blog/Week7.md +++ b/Cromer/Daily Blog/Week7.md @@ -15,4 +15,103 @@ Generated CSV: avg_task_time_comparison.png - \ No newline at end of file + Monday + + + + Finalized metrics to collect: mean energy, task count, avg execution time per node. + Updated the task logger to include start_time, end_time, and energy_consumed_joules. + Wrote extract_metrics() function to compute per-node statistics. + Successfully generated CSVs for both WaggleScheduler and FairshareScheduler. + + + +📁 Output: + + + logs/WaggleScheduler_task_log.csv + logs/FairshareScheduler_task_log.csv + + + + + + +Tuesday + + + + Created comparison script to merge Waggle and Fairshare metrics into: + logs/scheduler_comparison_metrics.csv + + Validated that each node’s stats reflect accurate workload and energy data. + + + +🧪 Learned: + + + Efficient use of pandas.groupby() and datetime arithmetic. + How scheduler design affects per-node behavior. + + + + + + + +Wednesday + + + + Plotted three graphs using pandas.plot() and matplotlib: + mean_energy_comparison.png + num_tasks_comparison.png + avg_task_time_comparison.png + + Each plot visualizes metrics side-by-side for Waggle and Fairshare across nodes. + + + +📈 Visuals help: + + + Quickly assess which scheduler is more energy-efficient or better at balancing load. + + +Thursday + + + + Edited waggle.yml to add more nodes: + 2x Raspberry Pi + 2x Jetson + 1x Blade + + Ensured rpi node participates in scheduling. + Ran simulation again to confirm expanded topology worked as expected. + + + +💡 Learned: + + + YAML structure and impact of node types on task distribution and power use. + + + + + + +Friday + + + + Worked on poster section: Visual Results (WIP). + Added key insights from graph analysis: + Waggle is more energy-efficient but not always fastest. + Fairshare balances task count better on high-power nodes. + + Added key takeaways for “Learning on the Lawn” presentation. + + From c6be32b964b18f15652bbf6e3bb8153fd07771a0 Mon Sep 17 00:00:00 2001 From: Kendalcoder Date: Wed, 6 Aug 2025 10:19:58 -0500 Subject: [PATCH 31/33] Add Week 8 journal with main goals and completed tasks --- Cromer/Daily Blog/Week8.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) create mode 100644 Cromer/Daily Blog/Week8.md diff --git a/Cromer/Daily Blog/Week8.md b/Cromer/Daily Blog/Week8.md new file mode 100644 index 0000000..4129448 --- /dev/null +++ b/Cromer/Daily Blog/Week8.md @@ -0,0 +1,25 @@ +Main Goals: + + + Begin working on final internship paper and PowerPoint presentation + Finalize CSV converter and finish debugging scripts + Analyze and visualize energy, CPU, memory statistics + + + +Tasks Completed: + + + ✅ Finished debugging and finalized the TensorBoard to CSV converter + ✅ Visualized resource stats: energy, CPU, memory using .ipynb + ✅ Observed that energy values were identical under one scheduler + ✅ Commented out FairShare in notebook to isolate WaggleScheduler logs + ✅ Manually compared scheduler outputs by changing file names + ✅ Collected workload data: + Number of running vs finished workloads + Compared stats from running simulation with 2 nodes vs 6 nodes + + ✅ Investigated whether performance improved with Jetson vs RPi, or 3+3 distribution + ✅ Finalized all scheduler module logic and visualizations + + From fe5b137526d0ff2d19f984bfbf56035664d6fdd1 Mon Sep 17 00:00:00 2001 From: Kendalcoder Date: Wed, 6 Aug 2025 10:21:40 -0500 Subject: [PATCH 32/33] Add Week 9 journal with main goals, completed tasks, and documentation goals --- Cromer/Daily Blog/week9.md | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 Cromer/Daily Blog/week9.md diff --git a/Cromer/Daily Blog/week9.md b/Cromer/Daily Blog/week9.md new file mode 100644 index 0000000..4c0bab4 --- /dev/null +++ b/Cromer/Daily Blog/week9.md @@ -0,0 +1,47 @@ +Week 9 + +Main Goals: + + + Finalize visualizations and slides + Prepare for Thursday’s informal presentation + Begin drafting user-facing documentation + + + +Tasks Completed: + + + ✅ Created presentation graphics and plots for metrics comparison + ✅ Delivered informal presentation + Overview of project + Architecture diagram (nodes, scheduler, tasks) + Scheduler comparison metrics + Key insights and takeaways + Question & Answer + + ✅ Prepared meeting notes for Thursday’s Argonne discussion + ✅ Participated in “Learning on the Lawn” session with team + ✅ On Friday: + Walked through all simulation and output logs + Reviewed and started drafting documentation: + Overview and install instructions + Sample run output and example use case + Description of scheduler concepts and steps performed + Target metrics (e.g., energy consumption) + + + +Documentation Goals Started: + + What is the purpose of the scripts in kubernetes ? + How to run a basic simulation? + How to change schedulers and locate logs? + How to generate plots from results? + + + + + + + From 4788830af60bb57a5632328d77f5f82f1d505aa0 Mon Sep 17 00:00:00 2001 From: Kendalcoder Date: Thu, 7 Aug 2025 22:04:31 -0500 Subject: [PATCH 33/33] Add Week 10 journal with main goals and planned tasks for final documentation push --- Cromer/Daily Blog/week10.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 Cromer/Daily Blog/week10.md diff --git a/Cromer/Daily Blog/week10.md b/Cromer/Daily Blog/week10.md new file mode 100644 index 0000000..6278be4 --- /dev/null +++ b/Cromer/Daily Blog/week10.md @@ -0,0 +1,23 @@ +Week 10 + +Main Goals: + Final documentation push + Final review with team + Implement feedback and polish deliverables + + + +Tasks Planned: + Mon–Tue: Complete documentation under /simulation/kubernetes/ + +commit id : +90cb458cb2f73332d0d375c3a8648d13dfa1cced (kubernetes documentation) +625f91052c30edc301c43cbb9e2540438311752b (scheduler documentation) + + Add use case: energy impact of different schedulers + Wed (Aug 6): Final 2-hr team review meeting to evaluate project and documentation + Thu–Fri: Iterate on code, plots, and docs based on team feedback + Finish up PowerPoint for PCU + Walk through checklist to ensure all components are ready for handoff + +