Lecture 6 Real Time Linux - A

You might also like

Download as ppt, pdf, or txt
Download as ppt, pdf, or txt
You are on page 1of 55

EE514 Real-Time Computing

Real-Time Linux
Department of Electrical Engineering
The Hong Kong Polytechnic University

EE514 Real-Time Computing

Real Time Linux Operating Systems


Swaminathan Sivasubramanian
Dependable Computing & Networking Laboratory
Iowa State University
swamis@iastate.edu

EE514 Real-Time Computing

Linux as a Real-Time OS
Traditional

RT Systems used custom built


systems which were not extensible I.e.
tough to develop new applications
However, as technology improved, generic
real-time OS became acceptable
In OS suited for extensible development
Linux looks more appealing

EE514 Real-Time Computing

Why Linux?

Linux (and its Real Time versions) are


free!!
Linux (and its Real Time versions) are
Open Source!!
Easy for developing RT applications

EE514 Real-Time Computing

Why not Linux?


Linux

didnt have any corporate support


until now
Linux, is a very good general purpose
operating system, but not so for real-time
OS (Why??)
Because, the design motive of a
conventional OS and RTOS is different

EE514 Real-Time Computing

Linux as your real-time


solution?
Could increase priority for real-time tasks
and assume they get scheduled
Problem Linux optimizes average case
whereas an RTOS should work under worst
case assumptions

EE514 Real-Time Computing

Linux A Simplified View

EE514 Real-Time Computing

Linux conflicts with RT constraints

Coarse grained synchronization long intervals when a


task has exclusive use of data ( as fine grained leads to
lot of overhead reducing the average case performance)
Linux batch all operations for efficient use of H/W

E.g freeing a list of pages when memory is full


reducing the worst case performance

Linux doesn't preempt low-priority task during system call


Linux will make high priority tasks wait for low priority to
release resources

EE514 Real-Time Computing

Real Time Linux approaches


Modify

the current Linux kernel to


guarantee RT constraints

Used by KURT

Make

the standard Linux kernel run as a


task of the real-time kernel

Used by RT-Linux, RTAI

EE514 Real-Time Computing

Modifying Linux kernel


Advantages

Most problems, such as interrupt handling,


already solved
Less initial labor

Disadvantages

No guaranteed performance
RT tasks dont always have precedence over
non-RT tasks.

EE514 Real-Time Computing

10

Running Linux as a process of a second


RT kernel
Advantages

Can make hard real time guarantees


Easy to implement a new scheduler

Disadvantages

Initial port difficult, must know a tremendous


amount about underlying hardware
Running a small real-time executive is not a
substitute for a full fledged RTOS

EE514 Real-Time Computing

11

RTAI Overview
Based

on Real-Time Hardware Abstraction


Layer (HAL) (also used in Windows NT)
HAL exports Linux data and functions
related to hardware
HAL defines an interface between RTAI
and Linux

The Windows NT hardware abstraction layer (HAL) refers to a layer of software that
deals directly with your computer hardware.

EE514 Real-Time Computing

12

RTAI A Simplified View

EE514 Real-Time Computing

13

RTAI Overview (continued)


Software

architecture

Interface to Linux hardware management


(HAL)
3 basic components: dispatcher, scheduler,
fifos
1 interface used in user tasks to initialize and
start the components

RTAI

is basically an interrupt dispatcher


(reroutes interrupts to Linux if necessary)
e.g: Disk interrupt

EE514 Real-Time Computing

14

RT-Linux Overview
Open

source Linux project


Supports x86, PowerPC, Alpha
Patch of the regular Linux kernel (simply
install the patch and recompile the kernel)
Provides an RT API for developers
Runs Linux kernel as lowest priority
process

EE514 Real-Time Computing

15

RT-Linux Task Structure

EE514 Real-Time Computing

16

RT-Linux Interrupt Dispatcher

EE514 Real-Time Computing

17

RT-Linux Overview (continued)


RT

tasks are coded as modules


Modules are inserted and removed at
users discretion
Extremely good at handling periodic tasks
Communicates with non-RT kernel and
other RT tasks via fifo queues
Tools are provided for graphical analysis of
RT execution
EE514 Real-Time Computing

18

Problems with RT-Linux


Currently

no support for aperiodic tasks


Not very useful for complex RT systems
Currently limited to simple problems

EE514 Real-Time Computing

19

Montavista A Faster Response Linux


Kernel
Montavista

Inc. provides a linux solution for


embedded systems
The solutions aim is to make the Linux
kernel fully preemptable
It identifies the points where priority
inversion occurs in Linux and makes those
points fully preemptable
A good embedded solution not a complete
RT solution.
EE514 Real-Time Computing

20

Real-Time Linux

A class of Linux systems which could meet the real-time


requirements.

There are a number of such real-time Linux systems


available:

RTLinux hard real-time

RTAI hard real-time

MontaVista soft real-time

and many more

Many of them are developed as research projects and


were released to public freely.

Some of them are commercialized though.

EE514 Real-Time Computing

21

RTLinux or RTCore

The first real-time Linux system developed as a research


project over a decade ago.

Subsequently commercialized to become a real-time core


(RTCore) of a commercial Linux called Wind River Linux.

RTLinux or RTCore is a hard real-time microkernel that


runs the entire Linux operating system as a fully
preemptable process.

The technologies developed to enable the real-time


operation are patented and cant be used freely.

EE514 Real-Time Computing

22

RTAI

RTAI stands for Real-Time Application Interface and is a


Linux extension to hard real-time application.

It is initially developed as a research project in Italy for


enhancing the RTLinux functionalities at that time.

Subsequently, new technologies were invented to replace


all the RTLinux code adopted from the initial RTLinux
prototype to overcome any patent problems.

The new technologies is collectively referred as ADEOS.

Current version is 3.8.1 released in May 2010.

Still actively under development and maintained by the


original developers in Italy and the Internal community.

EE514 Real-Time Computing

23

Beginning of Linux as a UNIX clone

EE514 Real-Time Computing

24

Linux System

Linux kernel

In Sept 1991, Linus Torvalds, a second year student of Computer


Science at the University of Helsinki, developed the preliminary
kernel of Linux, known as Linux version 0.0.1, and released to the
Internet.

Version 1.0, 2.0, 2.2, 2.4, and 2.6 were released in 1994, 1996,
1999, 2001, and 2003, respectively.

Current version is 2.6.37.2 released on 24 Feb 2011.

Linux system

Software from the GNU project + Linux kernel = Linux system

Redhat, Fedora, CentOS, Ubuntu, etc. are popular variants of


Linux distributions.

EE514 Real-Time Computing

25

Evolution of Linux

Early Linux is Not Designed for Real-Time Processing

Early Linux (1.x Kernel) installations on retired Windows PCs

Old/Obsolete hardware useful under Linux due to efficiency of O/S

Linux outperformed Windows in reliability and uptime (still does)

Linux Design: Fairness, Throughput and Resource-Sharing

Basic Unix development design principles applied in Kernel

Heavily (over)-loaded systems continue to make progress

Does not drop network connections or starve users / applications

Fairness- and Resource-Sharing Design is Linux's Strength

contributed to make Linux competitive and popular in the enterpriseserver and development-application environments

Gave rise to RedHat and others.

Essential to the evolution of Linux, endemic of UNIX legacy

EE514 Real-Time Computing

26

Why Linux in Real-Time Systems?

Not because of the Kernels Real-Time Performance!

UNIX-legacy Operating Systems were designed with operating


principles focused on throughput and progress

User tasks should not stall under heavy load

System resources must be shared fairly between users

Fairness, progress and resource-sharing conflict with the


requirements of time-critical applications

VIP vs. General Admission

UNIX systems (and Linux) are historically not Real-Time OS

Linux has lagged many commercial Unix's in Real-Time


performance-enhancement and Real-Time capabilities

Solaris, LynxOS, QNX

SCO

EE514 Real-Time Computing

27

Real time computing requirements


Scheduling
Hardware Interface
Communication and
Synchronization
Memory Management
Task Management

Timing
Configuration
External
Communications
Error Reporting
Embedded Features
File system
Reliability

28
EE514 Real-Time Computing

Why Real-Time in Linux Systems (Embedded)

Most Important Factors Inhibiting Linux Adoption

Data from VDC, Linuxs Future in the Embedded Systems Market, June 2004
EE514 Real-Time Computing

29

Real-Time in Handheld & Embedded Systems

Cost / Performance / Power / Weight Compromise

Competitive, High-Volume, Low-margin Markets

Maximum Feature-set, Add-ons, Responsive UI feel

Device specs: minimal CPU & Memory & Battery Powered

Minimal CPU = High CPU utilization

High CPU load + Time-Critical functionality RT specs

Real-time Requirements will never be alleviated by


Improvements in Hardware Performance / Efficiency

Software utilizing latest hardware technologies easily keep up with,


and usually out-paces, advances in hardware technology

If you don't believe that, go shopping (for a mobile phone)

EE514 Real-Time Computing

30

Real-Time Linux 2.6 Enablers

Pro-Audio Performance Requirements

Audio Community Involved in Kernel-Preemption since 2.2

Audio Community strongly Endorsing RT technology

Embedded Application Domain

Single-Chip, Mobile Applications (Wireless / Cellular Handsets)

Predictable OS performance eliminates HW design uncertainty

Multimedia Carrier (QOS) Application Domain

Reliable Prototyping and Improved Product Scheduling

Telephony, Audio / Video / Multimedia / Home Entertainment

Fine-Granular Preemption improves SMP scalability

Mainstreaming of SMP Technology

Dual / Quad / Octa - Core Intel, AMD, PPC, Arm

EE514 Real-Time Computing

31

Real-Time and Linux Kernel Evolution

Gradual Kernel Optimizations over Time

SMP Critical sections (Linux 2.x)

Low-Latency Patches (Linux 2.2)

Preemption Points / Kernel Tuning (Linux 2.2 / 2.4)

Preemptible Kernel Patches (Linux 2.4)

Fixed-time O(1) Scheduler (Linux 2.6)

Voluntary Preemption (Linux 2.6)

In 2003-04 Linux 2.6 RT Technology Regressed

Early Linux 2.6 Real-Time Performance was worse than 2.4


Kernel Performance

Audio Community and others balked at moving to 2.6 Kernel


Base

EE514 Real-Time Computing

32

Real-Time Inhibitor: Critical Section Locking

Linux 2.6 Kernel Critical Sections are Non-Preemptible

Critical sections protect shared resources, e.g. hardware


registers, I/O ports, and data in RAM

Critical sections are shared by Processes, Interrupts and CPUs.

Effective protection is provided by the Spin-Lock Subsystem

Critical sections must be locked and unlocked

Locked critical sections are not preemptible

Linux 2.6 Kernel has 11,000 critical sections

Exhaustive Kernel testing to identify worst-case code paths

Labour-intensive cleanup of critical sections

No control over 3rd party drivers

Worst-case after cleanup still not acceptable

Maintenance, community education, policing / regression testing

EE514 Real-Time Computing

33

Real-Time Inhibitor: Interrupt Handlers

Linux 2.6 Kernel: Unbounded IRQ subsystem latencies

Task-Preemption latency increases with hardware-interrupt load

Interrupts cannot be preempted

No Priorities for Interrupts

IRQ Subsystem always preempts tasks unconditionally

Unbounded SoftIRQ subsystem (Bottom Half Processing)

Activated by HW IRQs (Timers, SCSI, Network)

SoftIRQs re-activate, iterate

Driver-level adaptations

Network Driver NAPI adaption reduces denial of service (D.o.S.)


effects of high packet loads

EE514 Real-Time Computing

34

Real-Time Inhibitor: Legacy Locking

Existing Locking Subsystems are not Priority-Aware

System semaphore

Counting semaphore used to wake multiple waiting tasks

No support for priority inheritance

No priority ordering of waiters

Big Kernel Lock (BKL)

Originally non-preemptible, now preemptible using system semaphore

Can be released by blocking tasks, re-acquired upon wake-up

No priority-awareness, or priority inheritance for contending tasks

RCU (Read-Copy-Update) Locks in Network subsystem

Read-optimized cached locking requiring race-free invalidation

Read Write Locks

Classical blocking / starvation issues with no priority awareness

EE514 Real-Time Computing

35

The Fully Preemptible Linux Kernel

Dramatic Reduction in 2.6 Preemption Latencies

Multiple Concurrent Tasks in Independent Critical Sections


Generally Fully Preemptible No Delays

Design Flexibility

Provides Full Access to Kernel Resources to RT Tasks


Supports existing driver and application code
User-space Real-Time

Optimization Flexibility

Non-preemptible: Interrupt off paths and lowest-level interrupt management


Non-preemptible: Scheduling and context switching code

RT Tasks designed to use Kernel-resources in managed ways can


reduce or eliminate Priority-Inheritance delays

Adequate Instrumentation

Latency timing, latency triggers & stack tracing, histograms

EE514 Real-Time Computing

36

Kernel Evolution: Preemptible Code


Kernel 2.0

Kernels
2.2-2.4

Preemptible
Kernel 2.4
Kernel 2.6
Real-Time
Kernel 2.6
Preemptible
EE514 Real-Time Computing

Non-Preemptible
37

Real-Time Linux 2.6 Performance

Real-Time Linux 2.6 Kernel Performance

Far exceeds most stringent Audio performance requirements

Enables sub-millisecond control-loop response

Enables Hard Real Time for qualified RT-aware Applications

SMP Kernel Performance

SMP-safe code is by definition preemptible

Any code that allows concurrent execution by multiple CPUs, also


allows context switching and therefore preemption

Increased preemptible code surface in the Kernel also increases


SMP throughput / efficiency

EE514 Real-Time Computing

38

Real-Time Linux 2.6 Performance


(Cont)
No Preemption

Preemptible

MontaVista Linux 4.0

Target machine:

CPU utilization during test:

Intel Celeron 800 MHz

Real-Time
Preemption

100% most of the time

Test Duration:

20 hours

EE514 Real-Time Computing

39

RTLinux / RTAI Architecture


Users task

System libraries

Real Time task

Linux kernel

Drivers
I/O
Real-time Scheduler

Software interrupts

Real-time plugin

I/O

Hardware interrupts
HARDWARE

Hardware abstraction layer

real-time interrupt dispatcher, real-time scheduler

Inter processes communication services

EE514 Real-Time Computing

40

Interrupt Latency

The time stamp is frozen when the interrupt is generated

The current time is read when the interrupt is


acknowledged

The difference gives the interrupt latency

Dual-Xeon
3.2GHz

EE514 Real-Time Computing

Dual-core
Opteron
2GHz

41

Freescale dual-kernel, real-time solutions


(BSP) for Linux (Case studies)

Solutions provide sub-20 microsecond precision with


hard, real-time scheduling guarantees but at the
expense of increased programming effort and
memory protection
These techniques offer less than 250 sec latency
performance for greater than 99.5 percent of all
scheduled task under demanding system test loads
Under real-world conditions, performance is near the
99.5 percent, 100 sec mark

BSP : board support service


EE514 Real-Time Computing

42

Linux kernel improvements for real time

Features and performance enhancement for


upgrading standard Linux kernel to challenge real
time products and applications:

Enhanced schedulers
Virtual memory
Shared memory
Portable operating system interface X (POSIX) timers
Real-time signals
POSIX asynchronous I/O
POSIX threads
Quality of service capabilities
Low latency/preemptable kernel modifications

EE514 Real-Time Computing

43

Quality of sercice

As for quality of service, Linux v2.4 offers a


sophisticated component for bandwidth
management called Traffic Control. The
component supports methods for classifying,
prioritizing and limiting both incoming and
outgoing traffic. Linux can perform:

Limit bandwidth for certain computers


Help fairly share bandwidth
Protect the Internet from abuses
Restrict access and do routing based on user ID, MAC
address, source IP address and so on

EE514 Real-Time Computing

44

Linux network subsystem (Traffic


control)

EE514 Real-Time Computing

45

Queueing discipline- traffic control


Queueing

discipline provides a method to


enqueue a packet

EE514 Real-Time Computing

46

Low-Latency patches for Linux


The kernel latency is a quantity used to measure
the difference between the theoretical schedule
and the actual one
In a standard Linux kernel, the maximum latency
is equal to the maximum length of a system call
plus the processing time of all the interrupts that
fire before returning to user mode. This value can
be as large as 100 ms

EE514 Real-Time Computing

47

Low-Latency Linux (Red-Linux, some


Real-time
Linux)

This approach corrects the monolithic structure by


inserting explicit rescheduling points inside the
kernel. In this approach, when a thread is executing
inside the kernel it can explicitly decide to yield the
CPU to some other thread
In this way, the size of non-preemptable sections is
reduced, thus decreasing the latency
The consistency of kernel data is enforced by suing
cooperative scheduling
Since the low-latency patch has been carefully handtuned for quite a long time, it performs surprisingly
well

EE514 Real-Time Computing

48

Preemptable Linux (used in most realtime


systems)

Removes the constraint of a single execution flow


inside the kernel. It is not necessary to disable
preemption when an execution flow enters the kernel
To support full kernel preemptability, kernel data must
be explicitly protected using mutexes or spinlocks
The Linux preemptable kernel pathc, maintained by
Robert Love and sponsored by MontaVista

EE514 Real-Time Computing

49

Evaluation

EE514 Real-Time Computing

50

Probability density function of the


latency in the low-latency kernel

EE514 Real-Time Computing

51

Summary of the Freescale case studies

Linux is rapidly evolving to include more and more


features that have explicit value to the embedded
developer
Key enhancements to the Linux kernel, which
perform identically for all practical purposes
The developers choice regarding which should be
implemented can be based on independent criteria
including the ability to update/modify existing device
drivers for compatibility with the real-time
implementation, and the availability of each real-time
technique for the selected architecture and kernel
version

EE514 Real-Time Computing

52

References
RT-Linux

: http://www.rtlinux.org

RTAI

:
http://www.aero.polimi.it/projects/rtai/contri
b.htm
Montavista: http://www.mvista.com
Linux as a real-time operating system
Freescale semiconductor, David Beal,
Nov/2005

EE514 Real-Time Computing

53

EE514 Real-Time Computing

Real Time Linux

54

EE514 Real-Time Computing

Real Time Linux

55

You might also like