REAL-TIME MICHAEL ROITZSCH OVERVIEW TU Dresden MOS Real - Time 2 - - PDF document

real time
SMART_READER_LITE
LIVE PREVIEW

REAL-TIME MICHAEL ROITZSCH OVERVIEW TU Dresden MOS Real - Time 2 - - PDF document

Department of Computer Science Institute for System Architecture, Operating Systems Group REAL-TIME MICHAEL ROITZSCH OVERVIEW TU Dresden MOS Real - Time 2 SO FAR talked about in - kernel building blocks: threads memory IPC


slide-1
SLIDE 1 Department of Computer Science Institute for System Architecture, Operating Systems Group

REAL-TIME

MICHAEL ROITZSCH

TU Dresden MOS – Real-Time

OVERVIEW

2

slide-2
SLIDE 2

TU Dresden MOS – Real-Time

SO FAR

3

■ talked about in-kernel building blocks:

■ threads ■ memory ■ IPC

■ drivers enable access to a wide range of

non-kernel resources

■ need to manage resources

TU Dresden MOS – Real-Time

COURSE EIP

4

Basic Abstractions System Services Applications

slide-3
SLIDE 3

TU Dresden MOS – Real-Time

RESOURCES

5

Disk Bandwidth Network I/O Files TCP/IP Sessions Threads Memory Semaphores Communication Rights Windows Memory

TU Dresden MOS – Real-Time

TIME

6

slide-4
SLIDE 4

TU Dresden MOS – Real-Time

COMPARISON

7

Memory Time

discrete, limited

continuous, infinite

hidden in the system

user-perceivable

managed by pager

managed by scheduler

page-granular partitions

arbitrary granularity

all pages are of equal value ■ value depends on workload

active policy decisions, passive enforcement

active policy decisions, active enforcement

hierarchical management

Fiasco: flattened in-kernel view

TU Dresden MOS – Real-Time

HISTORY

8

■ in the early years of computing:

time coarsely managed by batch systems

■ jobs receive the entire machine or a

dedicated part of it for a given time

■ accounting, budgeting ■ no preemption ■ no interaction, good utilization

■ still prevalent in HPC systems

slide-5
SLIDE 5

TU Dresden MOS – Real-Time

THREADS

■ today: threads provide a CPU abstraction ■ each thread should observe its own time

as continuous

■ if there are more threads than physical

CPU cores, we have to multiplex

■ enforced by preemption ■ implemented with timer interrupt

9 TU Dresden MOS – Real-Time

PROGRESS

10

wall-clock time thread progress

slide-6
SLIDE 6

TU Dresden MOS – Real-Time

REAL-TIME

11 TU Dresden MOS – Real-Time

DEFINITION

12

■ a real-time system denotes a system,

whose correctness depends on the timely delivery of results

■ „it matters, when a result is produced“ ■ real-time denotes a predictable relation

between system progress and wall-clock time

slide-7
SLIDE 7

TU Dresden MOS – Real-Time

INTUITION

■ real-time is about

■ predictability ■ guarantees ■ timeliness ■ responsiveness

■ real-time is not about

■ being fast ■ live calculations

13 TU Dresden MOS – Real-Time

NON-EXAMPLE

■ game engines ■ rendered frames are delivered at

instances of wall-clock time, but

■ there is no guaranteed (minimal) frame-rate ■ rendering times are not even predictable ■ guaranteed responsiveness?

■ game engines are just fast (hopefully),

but not real-time

14

slide-8
SLIDE 8

TU Dresden MOS – Real-Time

EXAMPLES

focused catastrophic failures

■ engine control in a car ■ break-by-wire ■ avionics ■ railway control ■ set-top box DVD player ■ GSM-stack in your cell phone

15

benign failures complex

TU Dresden MOS – Real-Time

FLAVORS

16

hard real-time firm real-time soft real-time

missing some deadlines is tolerable

✘ ✔ ✔

a result delivered after its deadline is still useful

✘ ✘ ✔

slide-9
SLIDE 9

TU Dresden MOS – Real-Time

THEMES

17

➀ Predictability ➁ Guarantees ➂ Enforcement

TU Dresden MOS – Real-Time

PREDICTABILITY

18

slide-10
SLIDE 10

TU Dresden MOS – Real-Time

ENEMIES

19

■ gap between worst and average case

■ memory caches, disk caches, TLBs

■ „smart“ hardware

■ system management mode ■ disk request reordering

■ cross-talk from resource sharing

■ servers showing O(n) behavior

■ unpredictable external influences

■ interrupts

TU Dresden MOS – Real-Time

CROSSCUTTING

20

Kernel System Services Applications Hardware Realtime

slide-11
SLIDE 11

TU Dresden MOS – Real-Time

CUSTOM RTOS

■ small real-time executives tailor-made for

specific applications

■ fixed workload known a priori ■ pre-calculated time-driven schedule ■ used on small embedded controllers ■ benign hardware

21 TU Dresden MOS – Real-Time

RTLINUX

■ full Linux kernel and real-time processes

run side-by-side

■ small real-time executive underneath

supports scheduling and IPC

■ real-time processes implemented as

kernel modules

■ all of this runs in kernel mode ■ no isolation

22

slide-12
SLIDE 12

TU Dresden MOS – Real-Time

XNU

■ the kernel used in Mac OS X ■ implements four priority bands

■ normal ■ system high priority ■ kernel threads ■ real-time threads

■ you tell the kernel: I need A out of the

next B cycles, can be contiguous

23 TU Dresden MOS – Real-Time

XNU

■ normal users can create real-time threads ■ threads exceeding their quantum will be

demoted

■ with the first real-time thread, the kernel

switches from using continuations to full preemptibility

■ all drivers need to handle interrupts

correctly

24

slide-13
SLIDE 13

TU Dresden MOS – Real-Time

FIASCO

25

■ static thread priorities ■ bounded interrupt latency ■ fully preemptible in kernel mode ■ lock-free synchronization

■ uses atomic operations

■ wait-free synchronization

■ locking with helping instead of blocking

TU Dresden MOS – Real-Time

SKEPTICISM

26

Non-Real-Time Kernel Real-Time Middleware Applications

■ architecture for those afraid of touching

the OS

■ example: Real-Time Java

slide-14
SLIDE 14

TU Dresden MOS – Real-Time

RESOURCES

■ a real-time kernel alone is not enough ■ the microkernel solution:

■ real-time kernel enables temporal isolation

■ eliminates cross-talk and interrupt problems

■ user-level servers on top act as resource

managers ■ implement real-time views on specific resources

■ real-time is not only about CPU ■ details in the resource management lecture

27 TU Dresden MOS – Real-Time

GUARANTEES

28

slide-15
SLIDE 15

TU Dresden MOS – Real-Time

PROBLEM

■ worst case execution time (WCET) largely

exceeds average case

■ offering guarantees for the worst case will

waste lots of resources

■ missing some deadlines can be tolerated

with the firm and soft real-time scheme

29 TU Dresden MOS – Real-Time

MOTIVATION

30

■ desktop real-time ■ there are no hard real-time applications on

desktops

■ there is a lot of firm and soft real-time

■ low-latency audio processing ■ smooth video playback ■ desktop effects ■ user interface responsiveness

slide-16
SLIDE 16

TU Dresden MOS – Real-Time

H.264 DECODING

31

0% 5% 10% 15% 5 10 15 20 25 30 ms

WCET

TU Dresden MOS – Real-Time

KEY IDEA

32

■ guarantees even slightly below 100% of

WCET can dramatically reduce resource allocation

■ unused reservations will be used by

  • thers at runtime

■ use probabilistic planning to model the

actual execution

■ quality q: fraction of deadlines to be met

slide-17
SLIDE 17

TU Dresden MOS – Real-Time

KEY IDEA

33

WCET

TU Dresden MOS – Real-Time

RESERVATION

34

J J r

P(J does not run longer than r ∧ J is completed until its relative deadline) ≥ q

slide-18
SLIDE 18

TU Dresden MOS – Real-Time

RESERVATION

35

ri = max(r′

i, wi)

i = 1, . . . , n

■ to fully understand this:

see real-time systems lecture

■ good for microkernel: reservation can be

calculated by a userland service

■ kernel only needs to support static priorities

r′

i = min(r ∈ R | 1

mi

mi

  • k=1

P(Xi +k·Yi ≤ r) ≥ qi)

TU Dresden MOS – Real-Time

SCHEDULING

■ scheduling = admission + dispatch ■ admission

■ evaluates the requests from clients, which

follow some task model

■ calculates task parameters for dispatcher ■ verifies the feasibility of the guarantees ■ can reject requests

■ dispatch

■ executes and enforces the schedule

36

slide-19
SLIDE 19

TU Dresden MOS – Real-Time

ENFORCEMENT

37 TU Dresden MOS – Real-Time

DISPATCHER

38

■ executes schedule ■ enforces task parameters by preemption

■ e.g. on deadline overrun

■ picks the next thread

■ static priorities (e.g. RMS, DMS) ■ dynamic priorities (e.g. EDF)

■ seems simple …

slide-20
SLIDE 20

TU Dresden MOS – Real-Time

PROBLEM

39

■ high priority thread calls low priority service

with a medium priority thread interfering:

Thread 1 Thread 2 Thread 3

Priority

1 waits for 3 3 waits for 2 = 1 waits for 2

✔ ✔

Priority Inversion

TU Dresden MOS – Real-Time

SOLUTION

■ priority inheritance, priority ceiling ■ nice mechanism for this in Fiasco, NOVA:

timeslice donation

■ implemented by splitting thread control

block

■ execution context: holds CPU statue ■ scheduling context: time and priority

■ on IPC-caused thread switch, only the

execution context is switched

40

slide-21
SLIDE 21

TU Dresden MOS – Real-Time

DONATING CALL

41

Thread 1 Thread 2 Thread 3

Priority

■ IPC receiver runs on the sender‘s

scheduling context

■ priority inversion problem solved with

priority inheritance

TU Dresden MOS – Real-Time

ACCOUNTING

■ servers run on their clients time slice

■ when the server executes on behalf of a

client, the client pays with its own time

■ this allows for servers with no scheduling

context

■ server has no time or priority on its own ■ can only execute on client‘s time ■ relieves dispatcher from dealing with

servers

42

slide-22
SLIDE 22

TU Dresden MOS – Real-Time

TIMELESS

■ servers could be malicious, so you need

timeouts to get your time back

■ now, malicious clients can call the server

with a very short timeout

■ server‘s time will be withdrawn while the

server is in the middle of request handling

■ servers need to do session cleanup

■ on whose time? ■ open research problem

43 TU Dresden MOS – Real-Time

SMP

■ timeslice donation does not work in

multiprocessor case:

■ server is running on a different CPU ■ cross-CPU donation would be needed

■ you cannot donate time between CPUs

■ think of real-time guarantees ■ if one CPU is 100% loaded, donating time

to it will overload it

■ servers need to migrate to client CPU?

44

slide-23
SLIDE 23

TU Dresden MOS – Real-Time

OPTIMIZATION

45 TU Dresden MOS – Real-Time

SEMAPHORES

46

Thread 1 Thread 2 Semaphore Thread

down down

enqueue and block

up

dequeue and unblock

up

■ IPC only in the contention case ■ optimized for low contention ■ bad for producer-consumer (high contention)

slide-24
SLIDE 24

TU Dresden MOS – Real-Time

SCENARIO

■ consumer

■ request wakeup: set flag, enqueue ■ block

■ producer

■ check for wakeup: test flag, dequeue ■ send wakeup

■ very short critical sections ■ semaphores too expensive (2 IPCs)

47 TU Dresden MOS – Real-Time

IDEA

■ allow threads to have short periods where

they are never preempted

■ like a very low cost global system lock

■ delayed preemption ■ threads can set „don‘t preempt me“ flag

in UTCB

■ very low cost

48

slide-25
SLIDE 25

TU Dresden MOS – Real-Time

PROBLEMS

■ unbounded delay

■ if preemption would occur, the kernel

honors the delayed preemption flag only for a fixed maximum delay

■ delay affects all threads

■ problematic for real-time guarantees ■ affected threads can be limited to those

within a priority band

■ other threads can still preempt any time

49 TU Dresden MOS – Real-Time

BEWARE

■ system must be designed carefully ■ threads outside the affected priority band

must not interfere with protected data structures

■ more problems

■ unaffected threads might donate time to a

thread within the priority band

■ does not work cross-CPU

50

slide-26
SLIDE 26

TU Dresden MOS – Real-Time

SUMMARY

■ managing time is necessary

■ we interact with the system based on time

■ real-time is a cross-cutting concern ■ „hard real-time is hard, soft real-time is

even harder“

■ priority inheritance by timeslice donation ■ delayed preemption ■ next week: names

51