PROCESS SCHEDULING. Operating Systems 2015 Spring by Euiseong Seo

Similar documents
Objectives. Chapter 5: Process Scheduling. Chapter 5: Process Scheduling. 5.1 Basic Concepts. To introduce CPU scheduling

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

CPU Scheduling. CPU Scheduling

Chapter 5 Process Scheduling

Scheduling policy. ULK3e 7.1. Operating Systems: Scheduling in Linux p. 1

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

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

Chapter 5: CPU Scheduling. Operating System Concepts 8 th Edition

Announcements. Basic Concepts. Histogram of Typical CPU- Burst Times. Dispatcher. CPU Scheduler. Burst Cycle. Reading

CPU Scheduling Outline

W4118 Operating Systems. Instructor: Junfeng Yang

/ Operating Systems I. Process Scheduling. Warren R. Carithers Rob Duncan

Comp 204: Computer Systems and Their Implementation. Lecture 12: Scheduling Algorithms cont d

ICS Principles of Operating Systems

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

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

Linux scheduler history. We will be talking about the O(1) scheduler

Processor Scheduling. Queues Recall OS maintains various queues

CPU Scheduling. Core Definitions

Linux Process Scheduling Policy

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

Scheduling. Scheduling. Scheduling levels. Decision to switch the running process can take place under the following circumstances:

CPU SCHEDULING (CONT D) NESTED SCHEDULING FUNCTIONS

OPERATING SYSTEMS SCHEDULING

Operating Systems. III. Scheduling.

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

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

W4118 Operating Systems. Instructor: Junfeng Yang

Main Points. Scheduling policy: what to do next, when there are multiple threads ready to run. Definitions. Uniprocessor policies

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

Operating System: Scheduling

Process Scheduling in Linux

Operating Systems Lecture #6: Process Management

Introduction. Scheduling. Types of scheduling. The basics

Operating Systems Concepts: Chapter 7: Scheduling Strategies

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

Multiprocessor Scheduling and Scheduling in Linux Kernel 2.6

Job Scheduling Model

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

Real-Time Scheduling 1 / 39

Scheduling Algorithms

OS OBJECTIVE QUESTIONS

PROCESS SCHEDULING ALGORITHMS: A REVIEW

A Group based Time Quantum Round Robin Algorithm using Min-Max Spread Measure

Process Scheduling II

Konzepte von Betriebssystem-Komponenten. Linux Scheduler. Valderine Kom Kenmegne Proseminar KVBK Linux Scheduler Valderine Kom

ò Paper reading assigned for next Thursday ò Lab 2 due next Friday ò What is cooperative multitasking? ò What is preemptive multitasking?

A Comparative Study of CPU Scheduling Algorithms

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

Linux O(1) CPU Scheduler. Amit Gud amit (dot) gud (at) veritas (dot) com

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

Exercises : Real-time Scheduling analysis

Analysis and Comparison of CPU Scheduling Algorithms

Linux Scheduler. Linux Scheduler

Syllabus MCA-404 Operating System - II

Overview of the Linux Scheduler Framework

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

REDUCING TIME: SCHEDULING JOB. Nisha Yadav, Nikita Chhillar, Neha jaiswal

Operating Systems, 6 th ed. Test Bank Chapter 7

Readings for this topic: Silberschatz/Galvin/Gagne Chapter 5

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

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

Completely Fair Scheduler and its tuning 1

Threads Scheduling on Linux Operating Systems

Linux process scheduling

CS414 SP 2007 Assignment 1

A Review on Load Balancing In Cloud Computing 1

Scheduling. Monday, November 22, 2004

Weight-based Starvation-free Improvised Round-Robin (WSIRR) CPU Scheduling Algorithm

CS Fall 2008 Homework 2 Solution Due September 23, 11:59PM

ò Scheduling overview, key trade-offs, etc. ò O(1) scheduler older Linux scheduler ò Today: Completely Fair Scheduler (CFS) new hotness

Hard Real-Time Linux

Lecture 3 Theoretical Foundations of RTOS

This tutorial will take you through step by step approach while learning Operating System concepts.

Real- Time Scheduling

Chapter 5 Linux Load Balancing Mechanisms

A Priority based Round Robin CPU Scheduling Algorithm for Real Time Systems

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

A LECTURE NOTE ON CSC 322 OPERATING SYSTEM I DR. S. A. SODIYA

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

Performance Comparison of RTOS

A Survey of Parallel Processing in Linux

Linux 2.6 (< ) Scheduler. Administrivia. Linux task lists (continued) Linux task lists. Lottery scheduling [Waldspurger 94]

Process Scheduling in Linux

UNIVERSITY OF WISCONSIN-MADISON Computer Sciences Department A. Arpaci-Dusseau

Operating System Tutorial

Project No. 2: Process Scheduling in Linux Submission due: April 28, 2014, 11:59pm

EECS 750: Advanced Operating Systems. 01/28 /2015 Heechul Yun

4. Fixed-Priority Scheduling


POSIX. RTOSes Part I. POSIX Versions. POSIX Versions (2)

Tasks Schedule Analysis in RTAI/Linux-GPL

Chapter 2: OS Overview

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

Improvement of Scheduling Granularity for Deadline Scheduler

218 Chapter 5 CPU Scheduling

Real Time Scheduling Basic Concepts. Radek Pelánek

Linux Process Scheduling. sched.c. schedule() scheduler_tick() hooks. try_to_wake_up() ... CFS CPU 0 CPU 1 CPU 2 CPU 3

CHAPTER 1 INTRODUCTION

Efficiency of Batch Operating Systems

Transcription:

PROCESS SCHEDULING Operating Systems 2015 Spring by Euiseong Seo

Process Scheduling Basic Concepts Scheduling Criteria Scheduling Algorithms Multiple-Processor Scheduling Operating Systems Examples

Basic Concept CPU scheduling Deciding which process to run next, given a set of runnable processes Happens frequently, hence should be fast Scheduling points

Histogram of CPU-burst Times

Alternating Sequence of CPU And I/O Bursts

Alternating Sequence of CPU And I/O Bursts CPU burst vs. I/O burst A CPU-bound process An I/O-bound process

CPU Scheduler Selects from among the processes in memory that are ready to execute, and allocates the CPU to one of them CPU scheduling decisions may take place when a process 1. Switches from running to waiting state 2. Switches from running to ready state 3. Switches from waiting to ready 4. Terminates Scheduling under 1 and 4 is nonpreemptive All other scheduling is preemptive

Preemptive VS Non-Preemptive Non-preemptive scheduling The scheduler waits for the running job to voluntarily yield the CPU Jobs should be cooperative Preemptive scheduling The scheduler can interrupt a job and force a context switch What happens n If a process is preempted in the midst of updating the shared data? n If a process in a system call is preempted?

Scheduling Criteria CPU utilization keep the CPU as busy as possible Throughput # of processes that complete their execution per time unit Turnaround time amount of time to execute a particular process Waiting time amount of time a process has been waiting in the ready queue Response time amount of time it takes from when a request was submitted until the first response is produced, not output (for time-sharing environment)

Scheduling Algorithm Optimization Criteria Max CPU utilization Max throughput Min turnaround time Min waiting time Min response time

Scheduling Goals All systems No starvation Fairness: giving each process a fair share of the CPU Balance: keeping all parts of the system busy Batch systems Throughput: maximize jobs per hour Turnaround time: minimize time between submission and termination CPU utilization: keep the CPU busy all the time Interactive systems Response time: respond to requests quickly Proportionality: meet users expectations Real-time systems Meeting deadlines: avoid losing data Predictability: avoid quality degradation in multimedia system

Starvation A situation where a process is prevented from making progress because another process has the resource it requires Resource could be the CPU or a lock A poor scheduling policy can cause starvation If a high-priority process always prevents a low-priority process from running on the CPU Synchronization can also cause starvation One thread always beats another when acquiring a lock Constant supply of readers always blocks out writers

First-Come, First-Served (FCFS) Scheduling Process Burst Time P 1 24 P 2 3 P 3 3 Suppose that the processes arrive in the order P 1, P 2, P 3 The Gantt Chart for the schedule is: 0 P 1 P 2 P 3 24 27 30 Waiting time for P 1 = 0; P 2 = 24; P 3 = 27 Average waiting time: (0 + 24 + 27)/3 = 17

First-Come, First-Served (FCFS) Scheduling Suppose that the processes arrive in the order P2, P3, P1 The Gantt chart for the schedule is: P 2 P 3 P 1 0 3 6 30 Waiting time for P1 = 6; P2 = 0; P3 = 3 Average waiting time: (6 + 0 + 3)/3 = 3 Much better than previous case Convoy effect short process behind long process

Shortest-Job-First (SJF) Scheduling Associate with each process the length of its next CPU burst Use these lengths to schedule the process with the shortest time SJF is optimal gives minimum average waiting time for a given set of processes The difficulty is knowing the length of the next CPU request SJF may starve long processes

Example of SJF Process Arrival Time Burst Time P 1 0.0 6 P 2 2.0 8 P 3 4.0 7 P 4 5.0 3 SJF scheduling chart P 4 P P 3 1 P 2 0 3 9 16 24 Average waiting time = (3 + 16 + 9 + 0) / 4 = 7

Determining Length of Next CPU Burst Can only estimate the length Can be done by using the length of previous CPU bursts, using exponential averaging 1. 2. 3. 4. t n = actual length of n τ n+ 1 CPU burst = predicted value for the next CPU α, 0 α 1 Define : τ n= 1 = α tn + τ n th ( 1 α). burst

Prediction of the Length of the Next CPU Burst

Examples of Exponential Averaging α =0 τ n+1 = τ n Recent history does not count α =1 τ n+1 = α t n Only the actual last CPU burst counts If we expand the formula, we get: τ n+1 = α t n +(1 - α)α t n -1 + +(1 - α ) j α t n -j + +(1 - α ) n +1 τ 0 Since both α and (1 - α) are less than or equal to 1, each successive term has less weight than its predecessor

SRTF Shortest Remaining Time First Preemptive version of SJF If a new process arrives with CPU burst length less than remaining time of current executing process, preempt Process Arrival Time Burst P 1 P 3 P 2 P 4 SJF P 1 0.0 7 P 2 2.0 4 P 3 4.0 1 0 7 8 12 16 SRTF P 4 5.0 4 P 1 P 2 P 3 P 2 P 4 P 1 0 2 4 5 7 11 16

Round Robin Ready Q is treated as a circular FIFO Q Each job is given a time slice (or time quantum) Usually 10-100 ms Great for timesharing No starvation Typically, higher average turnaround time than SJF, but better response time Preemptive What do you set the quantum to be? A rule of thumb: 80% of the CPU bursts should be shorter than the time quantum Treats all jobs equally

Example of RR with Time Quantum = 4 The Gantt chart is: Process Burst Time P 1 24 P 2 3 P 3 3 P 1 P 2 P 3 P 1 P 1 P 1 P 1 P 1 0 4 7 10 14 18 22 26 30 Typically, higher average turnaround than SJF, but better response

Time Quantum and Context Switch Time

Turnaround Time Varies With The Time Quantum

Priority Scheduling A priority number (integer) is associated with each process The CPU is allocated to the process with the highest priority (smallest integer highest priority) Preemptive Nonpreemptive SJF is a priority scheduling where priority is the predicted next CPU burst time Problem Starvation low priority processes may never execute Solution Aging as time progresses increase the priority of the process

Priority Inversion Problem A situation where a higher-priority job is unable to run because a lower-priority job is holding a resource it needs, such as a lock What really happened on Mars? lock_acquire() Bus management task priority inversion communica?ons task meteorological data gathering task lock_acquire() lock_release()

Priority Inversion Solutions Priority inheritance protocol (PIP) The higher-priority job can donate its priority to the lower-priority job holding the resource it requires Priority ceiling protocol (PCP) The priority of the low-priority thread is raised immediately when it gets the resource The priority ceiling value must be predetermined

Multilevel Queue Ready queue is partitioned into separate queues foreground (interactive) background (batch) Each queue has its own scheduling algorithm foreground RR background FCFS Scheduling must be done between the queues Fixed priority scheduling n i.e.) serve all from foreground then from background n Possibility of starvation Time slice n each queue gets a certain amount of CPU time which it can schedule amongst its processes n i.e.) 80% to foreground in RR and 20% to background in FCFS

Multilevel Queue Scheduling

Multilevel Feedback Queue A process can move between the various queues Aging can be implemented this way Multilevel-feedback-queue scheduler defined by the following parameters Number of queues Scheduling algorithms for each queue Method used to determine when to upgrade a process Method used to determine when to demote a process Method used to determine which queue a process will enter when that process needs service

Example of Multilevel Feedback Queue Three queues Q0 RR with time quantum 8 milliseconds Q1 RR time quantum 16 milliseconds Q2 FCFS Scheduling 1. A new job enters queue Q0 which is served FCFS 2. When it gains CPU, job receives 8 milliseconds 3. If it does not finish in 8 milliseconds, job is moved to queue Q1 4. At Q1 job is again served FCFS and receives 16 additional milliseconds 5. If it still does not complete, it is preempted and moved to queue Q2

Multilevel Feedback Queues

Multiple-Processor Scheduling CPU scheduling more complex when multiple CPUs are available Homogeneous processors within a multiprocessor Asymmetric multiprocessing n only one processor accesses the system data structures, alleviating the need for data sharing Symmetric multiprocessing (SMP) n each processor is self-scheduling, all processes in common ready queue, or each has its own private queue of ready processes Processor affinity Process has affinity for processor on which it is currently running Soft affinity Hard affinity

NUMA and CPU Scheduling

UNIX Scheduler Characteristics Preemptive Priority-based n The process with the highest priority always runs. n 3 4 classes spanning ~170 priority levels (Solaris 2) Time-shared n Based on timeslice (or quantum) MLFQ (Multi-Level Feedback Queue) n Priority scheduling across queues, RR within a queue n Processes dynamically change priority

UNIX Scheduler General principles Favor I/O-bound processes over CPU-bound processes n I/O-bound processes typically run using short CPU bursts n Provide good interactive response; don t want editor to wait until CPU hog finishes quantum n CPU-bound processes should not be severely affected No starvation n Use aging Priority inversion?

Linux 2.4 Scheduling General characteristics Linux offers three scheduling algorithms n A traditional UNIX scheduler: SCHED_OTHER n Two real-time schedulers (mandated by POSIX.1b): SCHED_FIFO and SCHED_RR Linux scheduling algorithms for real-time processes are soft real-time n They give the CPU to a real-time process if any real-time process wants it n Otherwise they let CPU time trickle down to non real-time processes Here, we study the scheduling algorithm implemented in the Linux 2.4.18 kernel

Priorities in Linux 2.4 Scheduling Static priority n The maximum size of the time slice a process should be allowed before being forced to allow other processes to complete for the CPU Dynamic priority n The amount of time remaining in this time slice; declines with time as long as the process has the CPU n When its dynamic priority falls to 0, the process is marked for rescheduling Real-time priority n Only real-time processes have the real-time priority n Higher real-time priority values always beat lower values

Related Task structure in Linux 2.4 long counter; long nice; unsigned long policy; struct mm_struct *mm; int processor; unsigned long cpus_runnable; unsigned long cpus_allowed; struct list_head run_list; unsigned long rt_priority; time remaining in the task s current quantum (represents dynamic priority) task s nice value, -20 to +19. (represents static priority) SCHED_OTHER, SCHED_FIFO, SCHED_RR points to the memory descriptor processor ID on which the task will execute ~0 if the task is not running on any CPU (1<<cpu) if it s running on a CPU CPUs allowed to run head of the run queue real-time priority

Scheduling Policies in Linux 2.4 SCHED_OTHER SCHED_FIFO A real-time process runs until it either blocks on I/O, explicitly yields the CPU, or is preempted by another realtime process with a higher rt_priority Acts as if it has no time slice SCHED_RR It s the same as SCHED_FIFO, except that time slices do matter When a SCHED_RR process s time slice expires, it goes to the back of the list of SCHED_FIFO and SCHED_RR processes with the same rt_priority

Scheduling Quanta in Linux 2.4 Linux gets a timer interrupt or a tick once every 10ms on IA-32 (HZ=100) Alpha port of the Linux kernel issues 1024 timer interrupts per second Linux wants the time slice to be around 50ms Decreased from 200ms (in v2.2) /* v2.4 */ #if HZ < 200 #define TICK_SCALE(x) ((x) >> 2) #endif #define NICE_TO_TICKS(nice) (TICK_SCALE(20- (nice))+1) /* v2.2 */ #define DEF_PRIORITY (20*HZ/100)

Scheduling Epoch in Linux 2.4 The Linux scheduling algorithm works by dividing the CPU time into epochs In a single epoch, every process has a specified time quantum whose duration is computed when the epoch begins The epoch ends when all runnable processes have exhausted their quantum The scheduler recomputes the time-quantum durations of all processes and a new epoch begins The base time quantum of a process is computed based on the nice value

Selecting Next Process in Linux 2.4 repeat_schedule: next = idle_task(this_cpu); c = - 1000; list_for_each(tmp, &runqueue_head) { p = list_entry(tmp, struct task_struct, run_list); } if (can_schedule(p, this_cpu)) { int weight = goodness(p, this_cpu, prev- >active_mm); if (weight > c) } c = weight, next = p;

Recalculating Counters in Linux 2.4 if (unlikely(!c)) { /* New epoch begins */ struct task_struct *p; } spin_unlock_irq(&runqueue_lock); read_lock(&tasklist_lock); for_each_task(p) p- >counter = (p- >counter >> 1) + NICE_TO_TICKS(p- >nice); read_unlock(&tasklist_lock); spin_lock_irq(&runqueue_lock); goto repeat_schedule;

Calculating Goodness static inline int goodness (p, this_cpu, this_mm) { int weight = - 1; if (p- >policy == SCHED_OTHER) { weight = p- >counter; if (!weight) goto out; if (p- >mm == this_mm!p- >mm) weight += 1; weight += 20 p- >nice; goto out; } out: } weight = 1000 + p- >rt_priority; return weight; weight = 0 p has exhausted its quantum. 0 < weight < 1000 p is a conventional process. weight >= 1000 p is a real-time process.

Scalability of Linux 2.4 Scheduler Scalability problems in Linux 2.4 scheduler A single run queue Recalculating goodness() for every task on every invocation of the scheduler Linux 2.6: O(1) scheduler (prior to 2.6.23) The idea of fair scheduling by Con Kolivas CFS (Completely Fair Scheduler) by Ingo Molnar Many ideas borrowed from the Kolivas scheduler Officially included in Linux 2.6.23 Made Kolivas leave Linux kernel development Kolivas returns with BFS (Brain Fuck Scheduler) in 2009