linux scheduling 2002

21
Linux Scheduling Scheduling Policy and Algorithms, the schedule() Function of the Linux Kernel version 2.4.20 Patrick Stahlberg <[email protected]> $Id: speech.mgp,v 1.7 2002/12/17 10:59:17 patrick Exp $

Upload: arasuymailcom

Post on 08-Apr-2018

227 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 1/21

Linux Scheduling

Scheduling Policy and Algorithms, the schedule() Function

of the Linux Kernel version 2.4.20

Patrick Stahlberg<[email protected]>

$Id: speech.mgp,v 1.7 2002/12/17 10:59:17 patrick Exp $

Page 2: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 2/21

Structure of this talk

What is scheduling, why do we need it?concepts related to scheduling

How is scheduling done in Linux?policyalgorithms

Page 3: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 3/21

Part One

What is scheduling?

Page 4: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 4/21

What is scheduling?

Distribution of the resource ’processor’ to the competingtasks

In this talk: only uniprocessor-scheduling

Page 5: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 5/21

Lifecycle of a process

Ready Queue Active Process

New Processes

Page 6: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 6/21

Classification of processes

Interactive processesBatch processes

Real-time processes

I/O-boundCPU-bound

These classifications are independent

Page 7: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 7/21

Process Preemption

Ability of an OS to take away CPU control of a process before it doesthis voluntarily.

Processes are assigned processing time quanta, a process will bepreempted when its quantum duration is passed.

Scenario: a high-priority task enters the TASK_RUNNING state while alow-priority task is active --> the low-priority task is preempted

Linux features preemptive processes but not (yet) a preemptive kernel

Page 8: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 8/21

Measures of good Scheduling (1)

Fairness, equal treatment of processes

Prevent "Starvation" of processes

Use processing power efficiently

Minimize overhead caused by scheduling itself

Page 9: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 9/21

Measures of good Scheduling (2)

For a Multiuser-Multitasking-OS:

Interactive processes should have quick response times

Desirable: intelligent treatment of I/O- and CPU-bound processes

Page 10: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 10/21

Part Two

Linux scheduling policy and algorithms

Page 11: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 11/21

When is the scheduler called?

Direct invocationDuring System CallsMostly indirectly via sleep_on()e.g. when waiting for a resource

Lazy invocationAfter System Calls or interruptsif need_resched is set

e.g. after sched_set_scheduler()The timer interupt also sets need_resched, making sure that schedule()is called frequently

Page 12: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 12/21

Data structures used by the scheduler

need_reschedA flag set by interrupt handling routinesWhen set, ret_from_intr() calls schedule()

policyScheduling policy, see following slide

rt_priorityStatic priority field for real-time processses

priorityBase time quantum (SCHED_RR)Base priority (SCHED_OTHER)

counter

Page 13: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 13/21

Scheduling classes

Linux provides three different scheduling algorithms called

‘scheduling classes’

Each process can be assigned one scheduling class

Scheduling classes are: SCHED_FIFO, SCHED_RR,SCHED_OTHER

Page 14: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 14/21

The SCHED_FIFO scheduling class

Real-time processes

Unlimited CPU time for processes given that there is nohigher-priority process

Static priority

p2

t2t1

p1

p3

Page 15: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 15/21

The SCHED_RR scheduling class

Real-time processes

Enhancement of SCHED_FIFO that introduces time slicing

Static priority

p2

t1 t2 t3 t4 t5

p1

p3

Page 16: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 16/21

The SCHED_OTHER scheduling class

All other processes

Dynamic priority

Time slicing

Time slicing is using epochs

Page 17: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 17/21

Epochs

Each non-realtime process is assigned a time quantum atthe beginning of an epoch.

The epoch ends when all processes in the runqueue haveused up their time quantum.

Page 18: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 18/21

The schedule() function

Very much simplified:

If previous process is a SCHED_RR process which hasexhausted its time slice: assigns a new time slice to it andputs it at the end of runqueue.

Main scheduling loop:

Loops through items of runqueueCalculates a ‘goodness’ value for each one of themRemembers the first task with highest goodness value

Does a context switch to the chosen task.

Page 19: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 19/21

Goodness of a process

Calculated by the goodness() function

Goodness of real-time tasks is always higher thangoodness of a SCHED_OTHER task (1000 + rt_priority)

Goodness is calculated like this for SCHED_OTHER tasks:

if (p->mm == prev->mm)return p->counter + 1 + 20 - p->nice;

elsereturn p->counter + 20 - p->nice;

i

Page 20: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 20/21

Literature:

kernel/sched.chttp://en.tldp.org/LDP/tlk/kernel/processes.html#tth_sEc4.3sched_setscheduler(2)http://www.kernelnewbies.org/documents/schedule/

http://www.ora.com/catalog/linuxkernel/chapter/ch10.html

E d Q i ?

Page 21: Linux Scheduling 2002

8/7/2019 Linux Scheduling 2002

http://slidepdf.com/reader/full/linux-scheduling-2002 21/21

End. Questions?