Scheduling. Today. Next Time. ! Introduction to scheduling! Classical algorithms. ! Process interaction & communication

Similar documents
CPU Scheduling Outline

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

Chapter 5 Process Scheduling

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

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

CPU Scheduling. Core Definitions

Operating Systems. III. Scheduling.

CPU Scheduling. CPU Scheduling

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

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

OPERATING SYSTEMS SCHEDULING

CPU SCHEDULING (CONT D) NESTED SCHEDULING FUNCTIONS

Operating System: Scheduling

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

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

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

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

ICS Principles of Operating Systems

W4118 Operating Systems. Instructor: Junfeng Yang

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

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

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

Multiprocessor Scheduling and Scheduling in Linux Kernel 2.6

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

Operating Systems Concepts: Chapter 7: Scheduling Strategies

Introduction. Scheduling. Types of scheduling. The basics

Processor Scheduling. Queues Recall OS maintains various queues

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

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

Real-Time Scheduling 1 / 39

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

Operating Systems Lecture #6: Process Management

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

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

OS OBJECTIVE QUESTIONS

Linux Process Scheduling Policy

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

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

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

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

W4118 Operating Systems. Instructor: Junfeng Yang

A Comparative Study of CPU Scheduling Algorithms

Operating Systems, 6 th ed. Test Bank Chapter 7

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

Chapter 2: OS Overview

PROCESS SCHEDULING ALGORITHMS: A REVIEW

CS414 SP 2007 Assignment 1

Analysis and Comparison of CPU Scheduling Algorithms

Job Scheduling Model

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

Threads Scheduling on Linux Operating Systems

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

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

Assembly Language: Function Calls" Jennifer Rexford!

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

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

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

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

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

Scheduling Algorithms

Operating Systems. 05. Threads. Paul Krzyzanowski. Rutgers University. Spring 2015

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

Jorix kernel: real-time scheduling

Linux Scheduler. Linux Scheduler

Syllabus MCA-404 Operating System - II

An Implementation Of Multiprocessor Linux

Convenience: An OS makes a computer more convenient to use. Efficiency: An OS allows the computer system resources to be used in an efficient manner.

Performance Comparison of RTOS

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

REAL TIME OPERATING SYSTEMS. Lesson-10:

SYSTEM ecos Embedded Configurable Operating System

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

Tasks Schedule Analysis in RTAI/Linux-GPL

Operating System Tutorial

Types Of Operating Systems

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

Real-Time Systems Prof. Dr. Rajib Mall Department of Computer Science and Engineering Indian Institute of Technology, Kharagpur

Technical Properties. Mobile Operating Systems. Overview Concepts of Mobile. Functions Processes. Lecture 11. Memory Management.

Process Scheduling II

Analysis of Job Scheduling Algorithms in Cloud Computing

Chapter 5 Linux Load Balancing Mechanisms

Scheduling. Monday, November 22, 2004

Overview and History of Operating Systems

Advanced topics: reentrant function

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

White Paper Perceived Performance Tuning a system for what really matters

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

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

Contributions to Gang Scheduling

CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study

Processes and Non-Preemptive Scheduling. Otto J. Anshus

Chapter 1 8 Essay Question Review

Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z)

4. Fixed-Priority Scheduling

First-class User Level Threads

3 - Introduction to Operating Systems

Final Report. Cluster Scheduling. Submitted by: Priti Lohani

Multilevel Load Balancing in NUMA Computers

Real-time KVM from the ground up

Today. Intro to real-time scheduling Cyclic executives. Scheduling tables Frames Frame size constraints. Non-independent tasks Pros and cons

Transcription:

Scheduling Today! Introduction to scheduling! Classical algorithms Next Time! Process interaction & communication

Scheduling! Problem Several ready processes & much fewer CPUs! A choice has to be made By the scheduler, using a scheduling algorithm! Scheduling through time Early batch systems Just run the next job in the tape Early timesharing systems Scarce CPU time so scheduling is critical PCs Commonly one active process so scheduling is easy; with fast & per-user CPU scheduling is not critical Networked workstations & servers All back again, multiple ready processes & expensive CS, scheduling is critical 2

Process behavior! Bursts of CPU usage alternate with periods of I/O wait A property key to scheduling CPU-bound & I/O bound process! As CPU gets faster more I/O bound processes Histogram of CPU-burst times Long CPU burst Waiting for I/O Large number of short CPU bursts Short CPU burst Small number of long CPU bursts 3

Environments and goals! Different scheduling algorithms for different application areas! Worth distinguishing Batch Interactive Real-time! All systems Fairness comparable processes getting comparable service Policy enforcement seeing that stated policy is carried out Balance keeping all parts of the system busy (mix pool of processes) 4

Environments and goals! Batch systems Throughput max. jobs per hour Turnaround time min. time bet/ submission & termination Waiting time sum of periods spent waiting in ready queue CPU utilization keep CPU busy all time (anything wrong?)! Interactive systems Response time respond to requests quickly (time to start responding) Proportionality meet users expectations! Real-time system Meeting deadlines avoid losing data Predictability avoid quality degradation in multimedia systems! Average, maximum, minimum or variance? 5

When to schedule?! When to make scheduling decisions? 1. At process creation 2. When a process exits 3. When a process blocks on I/O, a semaphore, etc 4. When an I/O interrupts occurs 5. A fix periods of time Need a HW clock interrupting new (1) (2) admitted interrupt exit (4) ready running terminated I/O or event completion (4) dispatched waiting (3) I/O or event wait 6

When to schedule?! A fixed periods of times preemptive and nonpreemptive No-preemptive Once a process gets the CPU, it doesn t release it until the process terminates or switches to waiting Preemptive Using a timer, the OS can preempt the CPU even it the thread doesn t relinquish it voluntarily Of course, re-assignment involves overhead 7

First-Come First-Served scheduling! First-Come First-Served (FCFS) Simplest, easy to implement, non-preemptive Process Burst Time P1 24 P2 3 P3 3 P 1 0 24 P 2 27 Average waiting time: (0 + 24 + 27)/3 = 17 P 3 30 Change order of arrival. P 2 0 3 P 3 6 P 1 30 Average waiting time = 3 8

FCFS issues! Potentially bad average response time 1 CPU-bound process (burst of 1 sec.) Many I/O-bound ones (needing to read 1000 records) Each I/O-bound process reads one block per sec!! May lead to poor utilization of resources Poor overlap of CPU and I/O 9

Shortest Job/Remaining Time First sched.! Shortest-Job First Assumption total time needed (or length of next CPU burst) is known Provably optimal with respect to average response time First job finishes at time a Second job at time a + b Mean turnaround time (4a + 3 b + 2c + d)/4 Job # Finish time 1 a 2 b 3 c 4 d Biggest contributor Preempetive or not?! A preemptive variation Shortest Remaining Time (or SRPT) 10

SJF and SRT! Shortest Job First Non-preemptive P 1 0 7 P 3 8 P 2 12 P 4 16 avg. waiting time = (0 + 6 + 3 + 7)/4 = 4 Process Arrival Burst Time P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4! Shortest Remaining Time First Preemptive P 1 0 2 P 2 4 P 3 5 P 2 7 P 4 11 P 1 16 avg. waiting time = (9 + 1 + 0 +2)/4 = 3! Great, but what about Starvation? Burst time for a process? 11

Determining length of next CPU burst! Can only estimate length! Can be done using length of previous CPU bursts and exponential averaging - t n = actual lenght of n - τ n + 1 = predicted value for the next CPU -α, 0 α 1 - Define : th Weight of history CPU burst burst ( 1 α). τ n= 1 = α tn + τ n Most recent information Past history What s α? 12

Priority scheduling! SJF is a special case of priority-based scheduling Priority = reverse of predicted next CPU burst! Pick process with highest priority (lowest number) Process Burst time Priority P1 10 3 P2 1 1 P3 2 4 P4 1 5 P5 5 2 P 2 0 1 P 5 6 P 1 16 P 3 P 4 18 19 avg. waiting time = (6 + 0 + 16 +18 + 1)/5 = 8.2 13

Priority scheduling issues! And how do you assign priorities?! Starvation With an endless supply of high priority jobs, low priority processes may never execute! Solution Increases priority with age, i.e. accumulated waiting time Decrease priority as a function of accumulated processing time Assigned maximum quantum 14

Round-robin scheduling! Simple, fair, easy to implement, & widely-used! Each process gets a fix quantum or time slice! When quantum expires, if running preempt CPU! With n processes & quantum q, each one gets 1/n of the CPU time, no-one waits more than (n-1) q P 1 0 4 P 2 7 P 3 10 P 1 14 P 1 18 P 1 22 P 1 26 q = 4 P 1 30 Process Burst Time P1 24 P2 3 avg. waiting time = (6 + 4 +7)/3 = 5.66 P3 3 Preempetive or not? 15

Quantum & Turnaround time! Length of quantum Too short low CPU efficiency (why?) Too long low response time (really long, what do you get?) Commonly ~ 50-100 msec. Largest quantums don t imply shortest turnaround times 16

Combining algorithms! In practice, any real system uses some hybrid approach, with elements of each algorithm! Multilevel queue Ready queue partitioned into separate queues Each queue has its own scheduling algorithm Scheduling must be done between the queues Fixed priority scheduling; (i.e., foreground first); starvation? Time slice each queue gets a certain amount of CPU time which it can schedule amongst its processes Highest priority System processes Interactive processes Interactive editing processes Lowest priority Batch processes 17

Multiple (feedback) queues! Multiple queues, allow processes to move bet/ queues! Example CTSS Idea: separate processes based on CPU bursts IBM 7094 had space for 1 process in memory (switch = swap) Goals: low context switching cost & good response time Priority classes: class i gets 2 i quantas Scheduler executes first all processes in queue 0; if empty, all in queue 1, 18

Multiple (feedback) queues! CTSS If process uses all its quanta move to next lower queue (leave I/O-bound & interact. processes in high-priority queue) E.g. a process that needs 100 quanta runs for 1, 2, 4, 8, 16, 32, 37 so 7 swaps instead of 7 with plain RR What about process with long start but interactive after that? Carriage-return hit promote process to top class on the assumption it will become interactive 19

Thread scheduling! Now add threads user or kernel level?! User-level (process-contention scope) Context switch is cheaper You can have an application-specific scheduler at user level Kernel doesn t know of your threads! Kernel-level (system-contention scope) Any scheduling of threads is possible (since the kernel knows of all) Switching threads inside same process is cheaper than switching processes 20

Multiple-processor scheduling! Scheduling more complex w/ multiple CPUs! Asymmetric/symmetric (SMP) multiprocessing Supported by most OSs (common or independent ready queues)! Processor affinity benefits of past history in a processor! Load balancing keep workload evenly distributed Push migration specific task pushes processes for balance Pull migration idle processor asks for/pulls work! Symmetric multithreading (hyperthreading or SMT) Multiple logical processors on a physical one Each w/ own architecture state, supported by hardware Shouldn t require OS to know about it (but could benefit from) 21

Some other algorithms! Guaranteed sched. - e.g. proportional to # processes Priority = amount used / amount promised Lower ratio higher priority! Fair-Share scheduling Schedule aware of ownership Owners get a % of CPU, processes are picked to enforce it! Real-time scheduling Different categories Soft or Hard RT Important or critical? Hard: not on time ~ not at all Scheduling can be static or dynamic Schedulable real-time system Events a RT system may have to respond could be periodic or aperiodic Given a set of m periodic events i each with period P i and requiring C i seconds of CPU time, can the load be handle? Schedulable 22

Lottery scheduling! Simple & predictable! Basic idea Each process gets lottery tickets for resources (CPU time) Scheduling lottery, i.e. randomly pick a ticket Priority more tickets means higher chance! Interesting features Tickets can be used to insulate resource management policies of independent modules Tickets transfer if you are blocked on someone else, give them your tickets Ticket inflation rather than direct transfer Ticket currencies to isolate trust boundaries Compensation tickets to ensure everybody gets its share of the CPU even if it blocks before its quantum 23

Policy vs. mechanism! Separate what is done from how it is done Think of parent process with multiple children Parent process may knows relative importance of children (if, for example, each one has a different task)! None of the algorithms presented takes the parent process input for scheduling! Scheduling algorithm parameterized Mechanism in the kernel! Parameters filled in by user processes Policy set by user process Parent controls scheduling w/o doing it 24

Scheduling in xv6 void scheduler(void) { struct proc *p; } for(;;){ // Enable interrupts on this processor. sti(); // Loop over process table looking for process to run. acquire(&ptable.lock); for(p = ptable.proc; p < &ptable.proc[nproc]; p++){ if(p >state!= RUNNABLE) continue; // Switch to chosen process. It is the process s job to release // ptable.lock and then reacquire it before jumping back to us. proc = p; switchuvm(p); p >state = RUNNING; swtch(&cpu >scheduler, proc >context); switchkvm(); Enable interrupts to handle whatever is there before continuing Switches hw page table and TSS registers to point to process Switches hw page table register to the kernel-only page table, for when no process is running // Process is done running for now. // It should have changed its p >state before coming back. proc = 0; } release(&ptable.lock); 25

Scheduling in xv6 void sched(void) { int intena; } if(!holding(&ptable.lock)) panic("sched ptable.lock"); if(cpu >ncli!= 1) panic("sched locks"); if(proc >state == RUNNING) panic("sched running"); if(readeflags()&fl_if) panic("sched interruptible"); intena = cpu >intena; swtch(&proc >context, cpu >scheduler); cpu >intena = intena; Convention in xv6: a process that wants to give up the CPU must acquire the process table loc, release any other lock it is holding, update its own state and call sched. // Give up the CPU for one scheduling round. void yield(void) { acquire(&ptable.lock); proc >state = RUNNABLE; sched(); release(&ptable.lock); } 26

Scheduling in xv6 # Context switch # void swtch(struct context **old, struct context *new); # Save current register context in old # and then load register context from new..globl swtch swtch: movl 4(%esp), %eax movl 8(%esp), %edx # Save old callee save registers pushl %ebp pushl %ebx pushl %esi pushl %edi # Switch stacks movl %esp, (%eax) movl %edx, %esp # Load new callee save registers popl %edi popl %esi popl %ebx popl %ebp ret Loads arguments off the stack into %eax and %edx before changing stack pointer Pushes register state creating a context structure on the current stack; %esp is save implicitly to *old; %eip was saved by call instruction that invoked swtch and is above %ebp Switch stacks New stack has same format, so just undo; ret has the %eip at the top 27

Next time! Process synchronization! Race condition & critical regions Software and hardware solutions Review of classical synchronization problems What really happened on Mars? http://research.microsoft.com/~mbj/mars_pathfinder/mars_pathfinder.html 28

Scheduling the server-side of P2P systems! P2P users response is dominated by download >80% download requests in Kazaa are rejected due to capacity saturation at server peers >50% of all requests for large objects (>100MB) take more than one day & ~20% take over one week to complete! Most implementations use FCFS or PS! Apply SRPT! Work from Nortwestern PS Process Sharing FCFS First-Come First-Serve SRPT Shortest-Remaining Processing-Time Mean response time of object download as a function of system load. 29

Pthread scheduling API #include <pthread.h> #include <stdio.h> #define NUM THREADS 5 /* Each thread begin control in this function */ void *runner(void *param) { printf("i am a thread\n"); pthread exit(0); } int main(int argc, char *argv[]) { int i; pthread_t tid[num THREADS]; pthread_attr_t attr; pthread_attr_init(&attr); /* get the default attributes */ pthread_attr_setscope(&attr, PTHREAD_SCOPE_SYSTEM); /* set the sched algo */ pthread_attr_setschedpolicy(&attr, SCHED_OTHER); /* set the sched policy */ for (i = 0; i < NUM_THREADS; i++) /* create the threads */ pthread_create(&tid[i],&attr,runner,null); } for (i = 0; i < NUM_THREADS; i++) /* now join on each thread */ pthread_join(tid[i], NULL); 30

Multilevel scheduling! Batch systems allow scheduling at 3 levels (3) Select a ready process and allocate the CPU to it (1) (2) Look for mix of CPU- & I/O-bound jobs or Shortest job first (Job Scheduler) These two determine the degree of multiprogramming Too many processes & not enough memory swap somebody out; when there s room: which one to bring in? 31

Dispatcher! Dispatcher module gives control of CPU to process selected by short-term scheduler Switching context Switching to user mode Jumping to proper location in user program to restart it! Dispatch latency time for the dispatcher to stop one process & start another running 32

Algorithm evaluation! First problem: criteria to be used in selection E.g. Max CPU usage, but w/ max. response time of 1 sec.! Evaluation forms Analytic evaluation - deterministic modeling: Given workload & algorithm number or formula Simple & fast, but workload specific Queueing models Computer system described as a network of servers Load characterized by distributions Applicable to limited number of algorithms complicated math & questionable assumptions Simulations Distribution-driven or trace-based Implementation Highly accurate & equally expensive 33