Real- Time Scheduling

Similar documents
4. Fixed-Priority Scheduling

Predictable response times in event-driven real-time systems

Periodic Task Scheduling

Aperiodic Task Scheduling

Lecture 3 Theoretical Foundations of RTOS

Exercises : Real-time Scheduling analysis

Operating System Aspects. Real-Time Systems. Resource Management Tasks

174: Scheduling Systems. Emil Michta University of Zielona Gora, Zielona Gora, Poland 1 TIMING ANALYSIS IN NETWORKED MEASUREMENT CONTROL SYSTEMS

Resource Reservation & Resource Servers. Problems to solve

CPU SCHEDULING (CONT D) NESTED SCHEDULING FUNCTIONS

Aperiodic Task Scheduling

Real-Time Scheduling (Part 1) (Working Draft) Real-Time System Example

Real Time Scheduling Basic Concepts. Radek Pelánek

Real-Time Software. Basic Scheduling and Response-Time Analysis. René Rydhof Hansen. 21. september 2010

Scheduling Aperiodic and Sporadic Jobs in Priority- Driven Systems

Module 6. Embedded System Software. Version 2 EE IIT, Kharagpur 1

Operatin g Systems: Internals and Design Principle s. Chapter 10 Multiprocessor and Real-Time Scheduling Seventh Edition By William Stallings

CPU Scheduling. CPU Scheduling

A Survey of Fitting Device-Driver Implementations into Real-Time Theoretical Schedulability Analysis

Real-Time Systems Prof. Dr. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Scheduling. Yücel Saygın. These slides are based on your text book and on the slides prepared by Andrew S. Tanenbaum

Lec. 7: Real-Time Scheduling

Deciding which process to run. (Deciding which thread to run) Deciding how long the chosen process can run

Real-time Scheduling of Periodic Tasks (1) Advanced Operating Systems Lecture 2

Processor Scheduling. Queues Recall OS maintains various queues

Lecture Outline Overview of real-time scheduling algorithms Outline relative strengths, weaknesses

Real-Time Scheduling 1 / 39

HARD REAL-TIME SCHEDULING: THE DEADLINE-MONOTONIC APPROACH 1. Department of Computer Science, University of York, York, YO1 5DD, England.

Real- Time Mul,- Core Virtual Machine Scheduling in Xen

LAB 5: Scheduling Algorithms for Embedded Systems

Tasks Schedule Analysis in RTAI/Linux-GPL

Chapter 19: Real-Time Systems. Overview of Real-Time Systems. Objectives. System Characteristics. Features of Real-Time Systems

What is best for embedded development? Do most embedded projects still need an RTOS?

CPU Scheduling. Core Definitions

The simple case: Cyclic execution

Operating Systems. III. Scheduling.

Embedded Systems. 6. Real-Time Operating Systems

Operating Systems Concepts: Chapter 7: Scheduling Strategies

CPU Scheduling. Multitasking operating systems come in two flavours: cooperative multitasking and preemptive multitasking.

Real-Time Component Software. slide credits: H. Kopetz, P. Puschner

W4118 Operating Systems. Instructor: Junfeng Yang

Enhancing the Monitoring of Real-Time Performance in Linux

N. Audsley. A. Burns Department of Computer Science, University of York, UK. ABSTRACT

Thomas Fahrig Senior Developer Hypervisor Team. Hypervisor Architecture Terminology Goals Basics Details

A Periodic Events - For the Non- Scheduling Server

2. is the number of processes that are completed per time unit. A) CPU utilization B) Response time C) Turnaround time D) Throughput

The Design and Implementation of Real-Time Schedulers in RED-Linux

Real Time Operating System for Embedded DSP Applications

Overview of Presentation. (Greek to English dictionary) Different systems have different goals. What should CPU scheduling optimize?

CPU Scheduling Outline

Scheduling of Real- Time processes, strategies and analysis

Real-Time Operating Systems for MPSoCs

ICS Principles of Operating Systems

Middleware Support for Real-Time Tasks on Distributed and Multicore Platforms

OPERATING SYSTEMS SCHEDULING

DYNAMIC SCHEDULING STRATEGIES FOR AVIONICS MISSION COMPUTING. David L. Levine, Christopher D. Gill, and Douglas C. Schmidt

Chapter 5 Process Scheduling

Implementing and Using Execution Time Clocks in Ada Hard Real-Time Applications

Process Scheduling CS 241. February 24, Copyright University of Illinois CS 241 Staff

REAL TIME OPERATING SYSTEMS. Lesson-18:

CPU Scheduling. Basic Concepts. Basic Concepts (2) Basic Concepts Scheduling Criteria Scheduling Algorithms Batch systems Interactive systems

Multi-core real-time scheduling

Cache-aware compositional analysis of real-time multicore virtualization platforms

Priority-Driven Scheduling

Real-time scheduling algorithms, task visualization

Predictable response times in eventdriven real-time systems

Improvement of Scheduling Granularity for Deadline Scheduler

REAL TIME OPERATING SYSTEMS. Lesson-10:

CPU Scheduling. CSC 256/456 - Operating Systems Fall TA: Mohammad Hedayati

Sporadic Server Revisited

3. Scheduling issues. Common approaches /1. Common approaches /2. Common approaches / /13 UniPD / T. Vardanega 23/01/2013. Real-Time Systems 1

Road Map. Scheduling. Types of Scheduling. Scheduling. CPU Scheduling. Job Scheduling. Dickinson College Computer Science 354 Spring 2010.

Hierarchical Real-Time Scheduling and Synchronization

Quality of Service su Linux: Passato Presente e Futuro

Resource Synchronization in Hierarchically Scheduled Real-Time Systems using Preemptive Critical Sections

SOFTWARE VERIFICATION RESEARCH CENTRE THE UNIVERSITY OF QUEENSLAND. Queensland 4072 Australia TECHNICAL REPORT. No Real-Time Scheduling Theory

Comparison between scheduling algorithms in RTLinux and VxWorks

Process Scheduling. Process Scheduler. Chapter 7. Context Switch. Scheduler. Selection Strategies

Design and Implementation of a POSIX Compliant Sporadic Server for the Linux Kernel

Fitting Linux Device Drivers into an Analyzable Scheduling Framework

Objectives. Chapter 5: CPU Scheduling. CPU Scheduler. Non-preemptive and preemptive. Dispatcher. Alternating Sequence of CPU And I/O Bursts

Synchronization. Todd C. Mowry CS 740 November 24, Topics. Locks Barriers

A POSIX-Ada Interface for Application-Defined Scheduling

Module 8. Industrial Embedded and Communication Systems. Version 2 EE IIT, Kharagpur 1

Scheduling and Thread Management with RTEMS

Priority Inversion Problem and Deadlock Situations

Aperiodic Task Scheduling for Real-Time Systems. Brinkley Sprunt

Today. Intro to real-time scheduling Cyclic executives. Scheduling tables Frames Frame size constraints. Non-independent tasks Pros and cons

Improved Handling of Soft Aperiodic Tasks in Offline Scheduled Real-Time Systems using Total Bandwidth Server

Programming real-time systems with C/C++ and POSIX

Using EDF in Linux: SCHED DEADLINE. Luca Abeni

Job Scheduling Model

CPU Scheduling 101. The CPU scheduler makes a sequence of moves that determines the interleaving of threads.

Common Approaches to Real-Time Scheduling

Real-Time Scheduling and Threads: Basics

Multiprocessor Scheduling and Scheduling in Linux Kernel 2.6

Scheduling Real-time Tasks: Algorithms and Complexity

Real-Time Operating Systems.


Scheduling 0 : Levels. High level scheduling: Medium level scheduling: Low level scheduling

Transcription:

Real- Time Scheduling Chenyang Lu CSE 467S Embedded Compu5ng Systems

Readings Ø Single-Processor Scheduling: Hard Real-Time Computing Systems, by G. Buttazzo. q Chapter 4 Periodic Task Scheduling q Chapter 5 (5.1-5.4) Fixed Priority Servers q Chapter 7 (7.1-7.3) Resource Access Protocols Ø Optional further readings q A Practitioner's Handbook for Real-Time Analysis: Guide to Rate Monotonic Analysis for Real-Time Systems, by Klein et al. q Deadline Scheduling for Real-Time Systems: EDF and Related Algorithms, by Stankovic et al.

Real- Time Scheduling Ø What are the optimal scheduling algorithms? Ø How to assign priorities to processes? Ø Can a system meet all deadlines?

Benefit of Scheduling Analysis Schedulability analysis reduces development time by 50%! Reduce wasted implementation/testing rounds Analysis time << testing More reduction expected for more complex systems Quick exploration of design space! VEST (UVA) Baseline (Boeing) Design one processor 40 Design one processor 25 Implementation one processor 75 Scheduling analysis - MUF 1 Timing test 30 Design - two processors 25 Design - two processors 90 Implementation two processors 105 Scheduling analysis - DM/Offset 1 Timing test 20 Implementation 105 Total composition time 172 Total composition time 345 J.A. Stankovic, et al., VEST: An Aspect- Based Composi5on Tool for Real- Time Systems, RTAS 2003.

Consequence of Deadline Miss Ø Hard deadline q System fails if missed. q Goal: guarantee no deadline miss. Ø Soft deadline q User may notice, but system does not fail. q Goal: meet most deadlines most of the time.

Comparison Ø General-purpose systems q Fairness to all tasks (no starvation) q Optimize throughput q Optimize average performance Ø Embedded systems q Meet all deadlines. q Fairness or throughput is not important q Hard real-time: worry about worst case performance Chenyang Lu 6

Terminology Ø Task q Map to a process or thread q May be released multiple times Ø Job: an instance of a task Ø Periodic task q Ideal: inter-arrival time = period q General: inter-arrival time >= period Ø Aperiodic task q Inter-arrival time does not have a lower bound Chenyang Lu 7

Timing Parameters Ø Task T i q Period P i q Worst-case execution time C i q Relative deadline D i Ø Job J ik q Release time: time when a job is ready q Response time R i = finish time release time q Absolute deadline = release time + D i Ø A job misses its deadline if q Response time R i > D i q Finish time > absolute deadline Chenyang Lu 8

Example Ø P 1 = D 1 = 5, C 1 = 2; P 2 = D 2 = 7, C 2 = 4. Chenyang Lu 9

Metrics Ø A task set is schedulable if all jobs meet their deadlines. Ø Optimal scheduling algorithm q If a task set is not schedulable under the optimal algorithm, it is not schedulable under any other algorithms. Ø Overhead: Time required for scheduling. Chenyang Lu 10

Scheduling Single Processor

OpCmal Scheduling Algorithms Ø Rate Monotonic (RM) q Higher rate (1/period) à Higher priority q Optimal preemptive static priority scheduling algorithm Ø Earliest Deadline First (EDF) q Earlier absolute deadline à Higher priority q Optimal preemptive dynamic priority scheduling algorithm Chenyang Lu 12

Example Ø P 1 = D 1 = 5, C 1 = 2; P 2 = D 2 = 7, C 2 = 4. Chenyang Lu 13

AssumpCons Ø Single processor. Ø All tasks are periodic. Ø Zero context switch time. Ø Relative deadline = period. Ø No priority inversion. Ø RM and EDF have been extended to relax assumptions. Chenyang Lu 14

Schedulable UClizaCon Bound Utilization of a processor: n: number of tasks on the processor. Utilization bound U b : All tasks are guaranteed to be schedulable if U U b. No scheduling algorithm can schedule a task set if U>1 U b 1 U n Ci = P i= 1 An algorithm is optimal if its U b = 1 i Chenyang Lu 15

RM UClizaCon Bound Ø U b (n) = n(2 1/n -1) q n: number of tasks q U b (2) = 0.828 q U b (n) U b ( ) = ln2 = 0.693 Ø U U b (n) is a sufficient condition, but not necessary. Ø U b = 1 if all task periods are harmonic q Periods are multiples of each other q e.g., 1,10,100 Chenyang Lu 16

ProperCes of RM Ø RM may not guarantee schedulability even when CPU is not fully utilized. Ø Low overhead: when the task set is fixed, the priority of a task never changes. Ø Easy to implement on POSIX APIs. Chenyang Lu 17

EDF UClizaCon Bound Ø U b = 1 Ø U 1: sufficient and necessary condition for schedulability. Ø Guarantees schedulability if CPU is not over-utilized. Ø Higher overhead than RM: task priority may change online. Chenyang Lu 18

AssumpCons Ø Single processor. Ø All tasks are periodic. Ø Zero context switch time. Ø Relative deadline = period. Ø No priority inversion. Ø What if relative deadline < period? Chenyang Lu 19

OpCmal Scheduling Algorithms RelaCve Deadline < Period Ø Deadline Monotonic (DM) q Shorter relative deadline à Higher priority q Optimal preemptive static priority scheduling Ø Earliest Deadline First (EDF) q Earlier absolute deadline à Higher priority q Optimal preemptive dynamic priority scheduling algorithm Chenyang Lu 20

DM Analysis Sufficient but pessimistic test n i= 1 C i D i 1/ n n(2-1) Sufficient and necessary test: response time analysis Chenyang Lu 21

Response Time Analysis Works for any fixed- priority preemp5ve scheduling algorithm. Cri5cal instant results in a task s longest response 5me. when all higher- priority tasks are released at the same 5me. Worst- case response 5me Tasks are ordered by priority; T 1 has highest priority R R C C i 1 i i = i + j j= 1 Pj Chenyang Lu 22

Response Time Analysis Tasks are ordered by priority; T 1 has the highest priority. for (each task T j ) { I = 0; R = 0; while (I + C j > R) { R = I + C j ; if (R > D j ) return UNSCHEDULABLE; j-1 R I= C k=1 k; Pk } } return SCHEDULABLE; Chenyang Lu 23

Example Ø P 1 = D 1 = 5, C 1 = 2; P 2 = D 2 = 7, C 2 = 4. Chenyang Lu 24

EDF: Processor Demand Analysis To start, assume D i = P i Processor demand in interval [0, L]: total time needed for completing all jobs with deadlines no later than L. C P (0, L) = n i= 1 L P i C i Chenyang Lu 25

Schedulable CondiCon Theorem: A set of periodic tasks is schedulable by EDF if and only if for all L 0: L n i= 1 L P i C i There is enough time to meet processor demand at every time instant. Chenyang Lu 26

End at the first time instant L when all the released jobs are completed W(L): Total execution time of all tasks released by L. Busy Period B p } ) ( min{ ) ( 1 L L W L B C P L L W p i n i i = = = = Chenyang Lu 27

ProperCes of Busy Period CPU is fully utilized during a busy period. The end of a busy period coincides with the beginning of an idle time or the release of a periodic job. Chenyang Lu 28

Schedulable CondiCon All tasks are schedulable if and only if L n i= 1 C at all job release times before min(b p, H) L P i i Chenyang Lu 29

Compute Busy Period busy_period { H = lcm(p 1,,P n ); /* least common multiple */ L = C i ; L' = W(L); while (L'!= L and L' <= H) { L = L'; L' = W(L); } if (L' <= H) B p = L; else B p = INFINITY; } Chenyang Lu 30

Processor Demand Test: D i < P i A set of periodic tasks with deadlines no more than than periods is schedulable by EDF if and only if n L D i L D, L + 1 C i= 1 P i where D = {D i,k D i,k = kp i +D i, D i,k min(b p, H), 1 i n, k 0}. i Note: only need to test all deadlines before min(b p,h). Chenyang Lu 31

Schedulability Test Revisited Static Priority D = P RM Utilization bound Response time D < P DM Response time Dynamic Priority EDF Utilization bound EDF Processor demand Chenyang Lu 32

AssumpCons Ø Single processor. Ø All tasks are periodic. Ø Zero context switch time. Ø Relative deadline = period. Ø No priority inversion. Chenyang Lu 33

QuesCons Ø What causes priority inversion? Ø How to reduce priority inversion? Ø How to analyze schedulability? Chenyang Lu 34

Priority Inversion Ø A low-priority task blocks a high-priority task. Ø Sources of priority inversion q Access shared resources guarded by semaphores. q Access non-preemptive subsystems, e.g., storage, networks. Chenyang Lu 35

Semaphores Ø OS primitive for controlling access to shared variables. q Get access to semaphore S with wait(s). q Execute critical section to access shared variable. q Release semaphore with signal(s). Ø Mutex: at most one process can hold a mutex. wait(mutex_info_bus); Write data to info bus; signal(mutex_info_bus); Chenyang Lu 36

What happened to Pathfinder? Ø But a few days into the mission, not long after Pathfinder started gathering meteorological data, the spacecraft began experiencing total system resets, each resulting in losses of data Real- World (Out of This World) Story: Priority inversion almost ruined the path finder mission on MARS! hyp://research.microso[.com/~mbj/ Chenyang Lu 37

Priority Inversion critical section T 1 blocked! 1 1 1 4 4 4 4 0 2 4 6 8 10 12 14 16 18 20 22 Chenyang Lu 38

Unbounded Priority Inversion critical section 1 T 1 blocked by T 4, T 2, T 3! 1 1 3 2 4 4 4 4 4 0 2 4 6 8 10 12 14 16 18 20 22 Chenyang Lu 39

SoluCon Ø The low-priority task inherits the priority of the blocked high-priority task. T 1 only blocked by T 4 critical section 1 1 1 Inherit priority 1! Return to priority 4! 3 2 4 4 4 4 0 2 4 6 8 10 12 14 16 18 20 22 Chenyang Lu 40

Priority Inheritance Protocol (PIP) Ø When task T i is blocked on a semaphore held by T k q If prio(t k ) is lower than prio(t i ), prio(t i ) à T k Ø When T k releases a semaphore q If T k no longer blocks any tasks, it returns to its normal priority. q If T k still blocks other tasks, it inherits the highest priority of the remaining tasks that it is blocking. Ø Priority Inheritance is transitive q T 2 blocks T 1 and inherits prio(t 1 ) q T 3 blocks T 2 and inherits prio(t 1 ) Chenyang Lu 41

How was Path Finder saved? Ø When created, a VxWorks mutex object accepts a boolean parameter that indicates if priority inheritance should be performed by the mutex. q The mutex in question had been initialized with the parameter FALSE. Ø VxWorks contains a C interpreter intended to allow developers to type in C expressions/functions to be executed on the fly during system debugging. Ø The initialization parameter for the mutex was stored in global variables, whose addresses were in symbol tables also included in the launch software, and available to the C interpreter. Ø A C program was uploaded to the spacecraft, which when interpreted, changed these variables from FALSE to TRUE. Ø No more system resets occurred. Chenyang Lu 42

Bounded Number of Blocking Ø Assumptions of analysis q Fixed priority scheduling q All semaphores are binary q All critical sections are properly nested Ø Task T i can be blocked by at most min(m,n) times q m: number of distinct semaphores that can be used to block T i q n: number of lower-priority tasks that can block T i Chenyang Lu 43

Extended RMS UClizaCon Bound A set of periodic tasks can be scheduled by RMS/PIP if i, 1 i n, i k= 1 1) Tasks are ordered by priorities (T 1 has the highest priority). B i : the maximum amount of time when task T i can be blocked by a lower-priority task. C P k k + Bi P i i(2 1/ i Chenyang Lu 44

Extended Response Time Analysis Consider the effect of blocking on response time: R R C B C i 1 i i = i + i + j j= 1 Pj The analysis becomes sufficient but not necessary. Chenyang Lu 45

Priority Ceiling Ø C(S k ): Priority ceiling of a semaphore S k q Highest priority among tasks requesting S k. Ø A critical section guarded by S k may block task T i only if C(S k ) is higher than prio(t i ) Chenyang Lu 46

Compute B i Assumption: no nested critical sections. /* potential blocking by other tasks */ B1=0; B2=0; for each T j with priority lower than T i { b1 = longest critical section in T j that can block T i B1 = B1 + b1 } /* potential blocking by semaphores */ for each semaphore S k that can block T i { b2 = longest critical section guarded by S k among lower priority tasks B2 = B2 + b2 } return min(b1, B2) Chenyang Lu 47

Priority Ceiling Protocol Ø Priority ceiling of the processor: The highest priority ceiling of all semaphores currently held. Ø A task can acquire a resource only if q the resource is free, AND q it has a higher priority than the priority ceiling of the system. Ø A task is blocked by at most one critical section. Ø Higher run-time overhead than PIP. Chenyang Lu 48

AssumpCons Ø Single processor. Ø All tasks are periodic. Ø Zero context switch time. Ø Relative deadline = period. Ø No priority inversion. Chenyang Lu 49

Hybrid Task Set Ø Periodic tasks + aperiodic tasks Ø Problem: arrival times of aperiodic tasks are unknown Ø Sporadic task with a hard deadline q Inter-arrival time must be lower bounded q Schedulability analysis: treated as a periodic task with period = minimum inter-arrival time à can be very pessimistic. Ø Aperiodic task with a soft deadline q Possibly unbounded inter-arrival time q Maintain hard guarantees on periodic tasks q Reduce response time of aperiodic tasks Chenyang Lu 50

Background Scheduling Ø Handle aperiodic requests with the lowest-priority task Ø Advantages q Simple q Aperiodic tasks usually has no impact on periodic tasks. Ø Disadvantage q Aperiodic tasks have very long response times when the utilization of periodic tasks is high. Ø Acceptable only if q System is not busy q Aperiodic tasks can tolerate long delays Chenyang Lu 51

Polling Server Ø A periodic task (server) serves aperiodic requests. q Period: P s q Capacity: C s Ø Released periodically at period P s Ø Serves any pending aperiodic requests Ø Suspends itself until the end of the period if q it has used up its capacity, or q no aperiodic request is pending Ø Capacity is replenished to C s at the beginning of the next period Chenyang Lu 52

Example: Polling Server Chenyang Lu 53

Schedulability Ø Polling server has the same impact on periodic tasks as a periodic task. q n tasks with m servers: U p + U s U b (n+m) Ø Disadvantage: If an aperiodic request misses the server, it has to wait till the next period. à long response time. Ø Can have multiple servers (with different periods) for different classes of aperiodic requests Chenyang Lu 54

Deferrable Server (DS) Ø Preserve unused capacity till the end of the current period à shorter response to aperiodic requests. Ø Impact on periodic tasks differs from a periodic task. Chenyang Lu 55

Example: Deferrable Server Chenyang Lu 56

Under RMS As n à : When U s = 0.186, min U b = 0.652 System is schedulable if RM UClizaCon Bound with DS + + + = 1 1 2 2 / 1 n s s s b U U n U U Chenyang Lu 57 + + + = 1 2 2 ln s s s b U U U U + + 1 2 2 ln s s p U U U

DS: Middleware ImplementaCon First DS implementation on top of priority-based OS (e.g., Linux, POSIX) Server thread processes aperiodic events (2 nd highest priority) Budget manager thread (highest priority) manages the budget and controls the execution of server thread High Priority Low Priority ACE Timer Queue Aperiodic Events Kokyu Dispatching Queue Periodic Events Kokyu Dispatching Queue Periodic Events Kokyu Dispatching Queue Replenish Timer Budget Manager Thread Budget Exhausted Timer Server Thread Dispatching Thread Dispatching Thread Y. Zhang, C. Lu, C. Gill, P. Lardieri, G. Thaker, Middleware Support for Aperiodic Tasks in Distributed Real-Time Systems, RTAS'07. Chenyang Lu 58

AssumpCons Ø Single processor. Ø All tasks are periodic. Ø Zero context switch time. Ø Relative deadline = period. Ø No priority inversion. Chenyang Lu 59

Context Switch Time Ø RTOS usually has low context switch overhead. Ø Context switches can still cause overruns in a tight schedule. q Leave margin in your schedule. Ø Techniques exist to reduce number of context switches by avoiding certain preemptions. Ø Other forms of overhead: cache, thread migration, interrupt handling, bus contention, thread synchronization Chenyang Lu 60

Fix an Unschedulable System Ø Reduce task execution times. Ø Reduce blocking factors. Ø Get a faster processor. Ø Replace software components with hardware. Ø Multi-processor and distributed systems. Chenyang Lu 61

Final Ø 1-2:30 April 21 st Ø Open book/note Ø Scope: Operating Systems, Real-Time Scheduling 62

Final Demo Ø April 23 rd, 1pm-2:30pm Ø 20 min per team Ø Set up and test your demo in advance Ø All expected to attend the whole session Ø Return devices to Rahav Ø It ll be fun! J 63

Project Report Ø Submit report and materials by 11:59pm April 30 th. Ø Email to Rahav Ø Report q Organization: See conference papers in the reading list. q 6 pages, double column, 10 pts fonts. q Use templates on the class web page. Ø Other materials q Slides of your final presentation q Source code q Documents: README, INSTALL, HOW-to-RUN q Video (Youtube is welcome!) 64

Suggested Report Outline Ø Abstract Ø Introduction Ø Goals Ø Design: Hardware and Software Ø Implementation Ø Experiments Ø Related Work Ø Lessons Learned Ø Conclusion and Future Work 65

Peer Review Ø For fairness in project evaluation. Ø Email me individually by 11:59pm, April 30 th q Estimated percentage of contribution from each team member. q Brief justification. 66