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.
📌 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.
📌 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.
✅ Analysis of task schedulability under various workloads.
✅ Power consumption trends for each core.
✅ QoS evaluation across different system states.
✅ Final implementation & report.
📊 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 |
Here are the log files generated for different core configurations and utilization levels:
- scheduling_cores_8_utilization_0.25.txt
- scheduling_cores_8_utilization_0.5.txt
- scheduling_cores_8_utilization_0.75.txt
- scheduling_cores_8_utilization_1.0.txt
- scheduling_cores_16_utilization_0.25.txt
- scheduling_cores_16_utilization_0.5.txt
- scheduling_cores_16_utilization_0.75.txt
- scheduling_cores_16_utilization_1.0.txt
- scheduling_cores_32_utilization_0.25.txt
- scheduling_cores_32_utilization_0.5.txt
- scheduling_cores_32_utilization_0.75.txt
- scheduling_cores_32_utilization_1.0.txt
We were a team of two members consisting of the following individuals: