Skip to content

Intelligent Power Management & Task Scheduling for Real-Time Embedded Systems | Reinforcement Learning meets DVFS for Maximum Efficiency

Notifications You must be signed in to change notification settings

Amirreza81/RL-DVFS-Scheduling

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🚀 Power Management & Task Scheduling in Real-Time Embedded Systems

Project Overview

This project focuses on optimizing energy consumption in embedded systems with limited resources, such as battery-powered devices. We utilize reinforcement learning (RL) and dynamic voltage & frequency scaling (DVFS) to efficiently manage task scheduling, ensuring system constraints are met.


🏗 Project Phases

🟢 Phase 1 - Offline Scheduling

📌 Designed an RL-based model to optimize task scheduling on multi-core homogeneous systems.
📌 Applied DVFS to dynamically adjust voltage & frequency based on workload.
📌 Ensured Thermal Design Power (TDP) constraints were not violated.
📌 Used Earliest Deadline First (EDF) scheduling for real-time tasks.

🔵 Phase 2 - Online Scheduling

📌 Integrated soft aperiodic tasks dynamically into the system.
📌 Developed an adaptive task mapping strategy 🗺 for real-time & aperiodic tasks.
📌 Optimized Quality of Service (QoS) while maintaining system constraints.
📌 Utilized Slack Stealing Server to efficiently handle task scheduling.


📊 Results & Deliverables

✅ Analysis of task schedulability under various workloads.
✅ Power consumption trends for each core.
✅ QoS evaluation across different system states.
✅ Final implementation & report.


🖼 Visuals & Graphs


📊 CSV File:

Task Utilization Period WCET Deadline Arrival Time Type Frequency Voltage
Task 0 0.1338 4 1.2845 4 0 hard 1.1 1.5
Task 1 0.0285 5 3.4144 5 0 hard 0.75 0.9
Task 2 0.0057 6 3.7932 6 0 hard 0.75 0.9
Task 3 0.0147 1 0.6198 1 0 hard 1.1 1.5
Task 4 0.0084 3 1.2931 3 0 hard 0.75 0.9
Task 5 0.0011 1 0.0147 1 0 hard 0.75 0.9
Task 6 0.0747 5 3.0887 5 0 hard 0.75 0.9
Task 7 0.0238 2 0.0702 2 0 hard 0.75 0.9
Task 8 0.041 3 0.2194 3 0 hard 0.75 0.9
Task 9 0.0045 3 0.0239 3 0 hard 0.75 0.9
Task 10 0.0401 3 0.7467 3 0 hard 0.75 0.9
Task 11 0.0154 3 0.1211 3 0 hard 0.75 0.9
Task 12 0.0018 6 0.0812 6 0 hard 0.75 0.9
Task 13 0.0592 3 1.7761 3 0 hard 0.75 0.9
Task 14 0.0083 2 0.1816 2 0 hard 0.75 0.9
Task 15 0.0642 1 0.2705 1 0 hard 0.75 0.9
Task 16 0.2006 0.5258 10 9 soft 0.75 0.9
Task 17 0.253 1.5719 9 0 soft 0.75 0.9
Task 18 0.2066 5.4092 11 10 soft 0.75 0.9
Task 19 0.1854 3.3038 8 3 soft 0.75 0.9
Task 20 0.1343 3.8678 11 10 soft 0.75 0.9

📝 TXT Output Samples

Here are the log files generated for different core configurations and utilization levels:

🔹 8 Cores

🔹 16 Cores

🔹 32 Cores


👥 Members

We were a team of two members consisting of the following individuals: