Upload
piers-cobb
View
213
Download
0
Embed Size (px)
Citation preview
11
G53SRP: Deadline misses and cost over-runs in RTSJ
Chris GreenhalghChris Greenhalgh
School of Computer ScienceSchool of Computer Science
22
Contents• Handling missed deadlinesHandling missed deadlines
– In Periodic RealtimeThreadsIn Periodic RealtimeThreads– In other casesIn other cases
• Handling cost over-runsHandling cost over-runs– In periodic RealtimeThredsIn periodic RealtimeThreds
• SummarySummary
• Book: Wellings 10.4.1, 11.3, 12.1.1, 12.4Book: Wellings 10.4.1, 11.3, 12.1.1, 12.4
3
Handling missed deadlinesHandling missed deadlines• Every Every SchedulableSchedulable has a deadline has a deadline
– Part of Part of ReleaseParametersReleaseParameters– Measured from its release timeMeasured from its release time
• Every Every SchedulableSchedulable may also have a deadline may also have a deadline miss handlermiss handler– An An AsyncEventHandlerAsyncEventHandler
• With With SchedulerParametersSchedulerParameters, etc., etc.
– Also specified in Also specified in ReleaseParametersReleaseParameters
• Deadline miss handler (if specified) is released as Deadline miss handler (if specified) is released as soon as the deadline is missedsoon as the deadline is missed
See HelloDeadlineMissHandler.java
4
In Periodic RealtimeThreadsIn Periodic RealtimeThreads• (With deadline miss handler)
• In waitForNextPeriod– No deadline miss:
• returns after next release
– After deadline miss: •RealtimeThread is de-scheduled unless schedulePeriodic() has been called since deadline miss
• Most likely by deadline miss handler!
See HelloSchedulePeriodic.java
5
De/schedulePeriodic• RealtimeThread:
– deschedulePeriodic() deschedules future releases •waitForNextPeriod() will block
– schedulePeriodic() schedules thread at next release
– Any releases occurring between deschedulePeriodic and schedulePeriodic are lost
• e.g. after deadline miss but before re-schedule
6
In other casesIn other cases• RTSJ 1.0.1/2 does not adequately specify
deadline miss (and cost overrun) behaviour for– Aperiodic and sporadic RealtimeThreads
• Not supported at all
– AsyncEventHandlers• No clean API, e.g. to deschedule/reschedule
AsyncEventHandlers
• May be added in 1.1 – but doesn’t seem to be at present
AsyncEventHandlers in 1.0.2• Deadline handler released as soon as deadline Deadline handler released as soon as deadline
missedmissed– independently for each firingindependently for each firing
• By default the handler continues to executeBy default the handler continues to execute– Pending executions can be manipulated via etc.Pending executions can be manipulated via etc. AsyncEventHandler getPendingFireCount AsyncEventHandler getPendingFireCount
• Note: they are protected, i.e. from within handler onlyNote: they are protected, i.e. from within handler only
– Future releases can be manipulated via Future releases can be manipulated via AsyncEvent AsyncEvent addadd//removeHandlerremoveHandler
7See DeadlineMissAsyncEventHandler.java
Aperiodic and Sporadic threads in RTSJ 1.1
• Adds new methods to Adds new methods to RealtimeThreadRealtimeThread comparable to comparable to those for periodic processes:those for periodic processes:– waitForNextRelease() waitForNextRelease() cf. cf. waitForNextPeriod()waitForNextPeriod()
• Block until next release of aperiodic threadBlock until next release of aperiodic thread
– waitForNextReleaseInterruptible()waitForNextReleaseInterruptible() cf. cf. waitForNextPeriodInterruptible()waitForNextPeriodInterruptible()
• Ditto, but open to interruptionDitto, but open to interruption
– schedule() schedule() cf. cf. schedulePeriodic()schedulePeriodic()• (re)Schedule, e.g. after deadline miss(re)Schedule, e.g. after deadline miss
– deschedule() deschedule() cf. cf. deschedulePeriodic()deschedulePeriodic()• Do not scheduleDo not schedule
– release() release() –release the thread, cf. –release the thread, cf. AsyncEvent fire()AsyncEvent fire()• start() start() is the first release!is the first release!
8
9
Handling cost overrunsHandling cost overruns• Every Every SchedulableSchedulable has a CPU cost (time) has a CPU cost (time)
– Part of Part of ReleaseParametersReleaseParameters– Actual time (units) on CPUActual time (units) on CPU
• Every Every SchedulableSchedulable may also have a cost may also have a cost overrun handleroverrun handler– An An AsyncEventHandlerAsyncEventHandler
• With With SchedulerParametersSchedulerParameters, etc., etc.
– Also specified in Also specified in ReleaseParametersReleaseParameters
• Note: not all implementations support cost Note: not all implementations support cost monitoring, in fact most don’t at presentmonitoring, in fact most don’t at present– depends on OS supportdepends on OS support
10
Cost overruns• On cost over-run:
– Over-running Schedulable is immediately descheduled
– Cost overrun handler (if any) is released
• Schedulable is re-scheduled if– Its cost is increased– Its CPU budget is increased
• i.e. next release of a periodic RealtimeThread• Presumably in RTSJ 1.1 release of other cases also
– under-specified in RTSJ1.0.1
See HelloCostOverrunHandler.java
11
SummarySummary• Missed deadlines & cost over-runMissed deadlines & cost over-run
– Specified by ReleaseParameters deadlineSpecified by ReleaseParameters deadline– Results in call to deadline miss or cost overrun Results in call to deadline miss or cost overrun
handlerhandler– In Periodic RealtimeThreads In Periodic RealtimeThreads
• Deadline miss requires schedulePeriodic to resume Deadline miss requires schedulePeriodic to resume threadthread
• Cost overrun requires new release or increase of costCost overrun requires new release or increase of cost
– Under-defined in other cases in RTSJ 1.0.2Under-defined in other cases in RTSJ 1.0.2• Defined for aperiodic/sporadic threads in RTSJ 1.1Defined for aperiodic/sporadic threads in RTSJ 1.1