45
Lecture 12 CS 326: Operating Systems Multi-Level Feedback Queues

CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

Lecture 12

CS 326: Operating Systems

Multi-Level Feedback Queues

Page 2: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Building an Ideal Scheduler§ Priority-Based Scheduling

§ Multi-Level Queues

§ Multi-Level Feedback Queues§ Scheduling Domains§ Completely Fair Scheduling

Today’s Schedule

10/8/20 CS 326: Operating Systems 2

Page 3: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Building an Ideal Scheduler§ Priority-Based Scheduling

§ Multi-Level Queues

§ Multi-Level Feedback Queues§ Scheduling Domains§ Completely Fair Scheduling

Today’s Schedule

10/8/20 CS 326: Operating Systems 3

Page 4: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ We’ve discussed several CPU scheduling algorithms§ Each algorithm has its own set of strengths and

weaknesses§ Like anything in computer science, scheduling is all

about managing trade-offs

§ By designing our scheduler carefully, we can provide good performance for a variety of workloads

CPU Scheduling

10/8/20 CS 326: Operating Systems 4

Page 5: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ In a perfect world, we’d have a scheduler with:§ Quick turnaround times§ Quick response times§ Free beer

§ Turnaround: amount of time from process arrival to process completion

§ Response: how quickly a process starts running after it arrives

The Ideal Scheduler

10/8/20 CS 326: Operating Systems 5

Page 6: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ The MLFQ (and variants thereof) is one of the most commonly-used scheduling algorithms§ macOS, Windows, Solaris, FreeBSD

§ *With modifications§ Linux: 1991 – 2001

§ Builds on the idea of priority scheduling: different tasks will run with different priorities

Multi-Level Feedback Queue

10/8/20 CS 326: Operating Systems 6

Page 7: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Building an Ideal Scheduler§ Priority-Based Scheduling

§ Multi-Level Queues

§ Multi-Level Feedback Queues§ Scheduling Domains§ Completely Fair Scheduling

Today’s Schedule

10/8/20 CS 326: Operating Systems 7

Page 8: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Why use priority scheduling as a base for more complicated algorithms?

§ Not all tasks have the same resource requirements:§ Your browser: needs CPU frequently§ Time Sync Daemon: needs CPU rarely

§ By prioritizing tasks effectively into multiple queues, we can make sure they get the resources they need§ Everybody’s happy!

Priority Scheduling

10/8/20 CS 326: Operating Systems 8

Page 9: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

Multi-Level Queue

10/8/20 CS 326: Operating Systems 9

Page 10: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Many implementations of this multi-queue approach use different scheduling algorithms per queue

§ System priority? Use FIFO§ Must be empty before moving to the interactive queue

§ Interactive? Use shortest job first (SJF)§ Batch queue? Use round robin (RR)

MLQ: Algorithms

10/8/20 CS 326: Operating Systems 10

Page 11: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ The only issue with assigning priorities in a fixed manner is that priorities often change§ Plus, if we ask applications what priority to run at

they’ll all want to be #1

§ Maybe you minimize your web browser… Should it still be a high priority?

§ Bursty workloads: perhaps a task sits idle 70% of the time but needs lots of resources 30% of the time

§ We need to allow priorities to change dynamically

Dynamic Priority

10/8/20 CS 326: Operating Systems 11

Page 12: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Rather than asking programs for their priority, we’ll assign them automatically instead

§ Let’s have a thought experiment: How can we assign priorities fairly and efficiently?

§ …

Implementing Dynamic Priorities

10/8/20 CS 326: Operating Systems 12

Page 13: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Start the process in a queue based on its resource requirements and move it based on usage patterns§ Reactive scheduling

§ Processes that use more CPU will be moved to lower priorities over time§ Process aging

§ Stop using so much CPU? Priority will gradually be boosted

Implementing Dynamic Priorities

10/8/20 CS 326: Operating Systems 13

Page 14: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ A reactive algorithm doesn’t really sound that great§ It just takes what it has seen in the past into account!§ A far cry from “intelligence”

§ However, many patterns in computer science (and in the real world!) repeat themselves

§ You can… adequately… predict the future by looking at the past

Reactive Algorithms

10/8/20 CS 326: Operating Systems 14

Page 15: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Building an Ideal Scheduler§ Priority-Based Scheduling

§ Multi-Level Queues

§ Multi-Level Feedback Queues§ Scheduling Domains§ Completely Fair Scheduling

Today’s Schedule

10/8/20 CS 326: Operating Systems 15

Page 16: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ MLFQ is designed to be a good scheduler for systems that have a variety of process types§ Multimode systems

§ Goals of the algorithm:1. Favor short jobs2. Favor I/O bound jobs3. Split processes into queues based on usage needs

Multi-Level Feedback Queue

10/8/20 CS 326: Operating Systems 16

Page 17: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Processes enter at the highest priority queue§ When their turn comes, the process runs and does one of

the following:1. Finishes execution2. Relinquishes control of the CPU3. Gets preempted by the OS

§ When (2) happens, the process returns to the end of its current queue

§ When (3) happens, the process is moved to the next lower priority queue

Algorithm (1/2)

10/8/20 CS 326: Operating Systems 17

Page 18: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Once the process reaches the last queue, or base level queue, it stays there§ Usually scheduled w/ Round Robin algorithm

§ Long-running background tasks can happily stay in the base level queue

§ If the process blocks for I/O, then it will be promoted to one queue higher§ Allows processes to ”escape” to a higher priority

Algorithm (2/2)

10/8/20 CS 326: Operating Systems 18

Page 19: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

MLFQ

10/8/20 CS 326: Operating Systems 19

Page 20: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ We have different priorities based on queues, but we can also assign processes a priority level§ Called nice level on Unix systems

§ Using these priorities, we can iterate over the queue and:§ Run processes with a higher priority first§ If all priorities are the same, we fall back to round robin

Adding Priorities

10/8/20 CS 326: Operating Systems 20

Page 21: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Nice levels range from -20 (highest priority) to 19 (lowest priority)§ Why? Arbitrary§ Why does positive = low priority?

§ Essentially ”adding” CPU usage to a process

§ The default nice level is 0§ As a regular user, you can only decrease your

process priority

nice

10/8/20 CS 326: Operating Systems 21

Page 22: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Let’s be nice to the other users on our machine:

§ nice -n 19 COMMAND§ renice +19 PID§ Doesn’t seem that important these days. In the past,

multi-user systems were much more common§ Still somewhat true today: we can ssh into any of the

machines in the department and use them remotely

nice your Jobs

10/8/20 CS 326: Operating Systems 22

Page 23: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ The nice command can also be useful in tweaking your system to get better performance

§ Perhaps you have a web server running to host your band’s latest album…§ …but don’t want lots of web users downloading it to

interrupt your gaming session

§ nice the web server process (apache, nginx, etc)

Tweaking Priorities

10/8/20 CS 326: Operating Systems 23

Page 24: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Let’s look at some process usage profiles under MLFQ

§ We have different job types:§ Long running§ Short§ I/O-bound

MLFQ CPU Usage Profiles

10/8/20 CS 326: Operating Systems 24

Page 25: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

A Long-Running Job

10/8/20 CS 326: Operating Systems 25

Page 26: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

Long Running + Interactive Job

10/8/20 CS 326: Operating Systems 26

*Approximates SJF

Page 27: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

Heavy I/O

10/8/20 CS 326: Operating Systems 27

Page 28: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ One major weakness of MLFQ is starvation§ If there are too many processes in general, long-

running processes may never get to run§ This can happen from a busy interactive system§ Or, you can simulate this situation with a fork bomb

§ Don’t run this in your terminal:§ :(){ :|: & };:

§ Cripples machine by starting processes that start more processes, and so on… how to do in C?

Starvation

10/8/20 CS 326: Operating Systems 28

Page 29: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

Starvation

10/8/20 CS 326: Operating Systems 29

Page 30: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ To deal with starving processes, the scheduler implements a periodic priority boost

§ Every so often, the priority of all running processes is increased

§ This prevents starving processes and also helps cope with processes that have varying usage patterns§ If a background process has become more

interactive, it gets a chance to run in the interactive queue

Avoiding Starvation

10/8/20 CS 326: Operating Systems 30

Page 31: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

Before and After Boost

10/8/20 CS 326: Operating Systems 31

Page 32: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ You can also ”game” MLFQ by stopping your process just before its time quantum is up§ Great, you get to stay in your current queue!

§ To deal with this, we can record the total amount of time the CPU spends in each queue§ Spending too much time (configurable threshold)

causes your process to be moved to the next queue

Gaming the System

10/8/20 CS 326: Operating Systems 32

Page 33: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

Gaming Tolerance

10/8/20 CS 326: Operating Systems 33

Page 34: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ To help cope with these edge cases, the scheduler records total CPU time across all queues

§ The more time spent on the CPU, the lower the queue your process will be placed in

§ However, the lower the priority queue, the longer the scheduling quantum

Process Accounting

10/8/20 CS 326: Operating Systems 34

Page 35: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

CPU Time Accounting

10/8/20 CS 326: Operating Systems 35

Page 36: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ MLFQ is tasked with improving both response time and turnaround time

§ Response time: processes will always be considered “short running” when submitted§ They start running quickly

§ Turnaround: we avoid starvation and periodically boost priorities to cope with changing usage patterns

§ We can have our cake and eat it too! (kinda…)

MLFQ Goals

10/8/20 CS 326: Operating Systems 36

Page 37: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Building an Ideal Scheduler§ Priority-Based Scheduling

§ Multi-Level Queues

§ Multi-Level Feedback Queues§ Scheduling Domains§ Completely Fair Scheduling

Today’s Schedule

10/8/20 CS 326: Operating Systems 37

Page 38: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Unfortunately, we can’t always assume there is just one CPU

§ These days, we have to cope with:§ Cache levels§ Hyperthreading§ Multi-core§ Multi-processor§ NUMA Architectures

Scheduling Domains (1/2)

10/8/20 CS 326: Operating Systems 38

Page 39: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ To deal with this, Linux supports scheduling domains

§ Scheduling domains allow the various “execution units” (CPUs, hardware threads, cores, etc) to be placed in a hierarchy§ Some are less desirable than others: I’d prefer a real

core over a hyperthread§ Natural hierarchy: one core, two logical threads

Scheduling Domains (2/2)

10/8/20 CS 326: Operating Systems 39

Page 40: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Process migration takes these scheduling domains into account

§ Example: cores on a single CPU may have separate L1 cache and unified (shared) L2 cache§ Favor: pinning to a single core§ Next best: scheduling on a different core, same CPU§ Worst: migrating to a different CPU

Migration

10/8/20 CS 326: Operating Systems 40

Page 41: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Building an Ideal Scheduler§ Priority-Based Scheduling

§ Multi-Level Queues

§ Multi-Level Feedback Queues§ Scheduling Domains§ Completely Fair Scheduling

Today’s Schedule

10/8/20 CS 326: Operating Systems 41

Page 42: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ As I mentioned, the Linux kernel does not use MLFQ§ Instead, completely fair scheduling (CFS) attempts

to, well… be completely fair.§ In an ideal world, we could actually assign part of the

CPU power to processes:§ A gets 50%, B gets 25%, and C gets 25%, and they all

run at the exact same time§ Awesome! Not possible though

Completely Fair Scheduling

10/8/20 CS 326: Operating Systems 42

Page 43: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Executes processes in a round robin fashion but without a fixed interrupt/time quantum

§ Each process gets a time slice§ 1ms or more§ Chosen based on a maximum execution time (how

long the process would run on an “ideal” processor)

§ CPU usage is tracked per process§ Processes are inserted into a red-black tree and

sorted by usage

CFS

10/8/20 CS 326: Operating Systems 43

Page 44: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Let’s assume a maximum execution time of 10ms§ We run 5 processes§ Each process gets 10 / 5 = 2 ms of CPU time§ To deal with nice values, we weight the processes

§ Pretend that they’ve already run for some time when they really haven’t

§ And that, my friends, is how scheduling works on modern OS

CFS: Dividing up Time

10/8/20 CS 326: Operating Systems 44

Page 45: CS 326: Operating Systemsmmalensek/cs326/schedule/... · scheduling quantum Process Accounting 3/5/20 CS 326: Operating Systems 34. CPU Time Accounting 3/5/20 CS 326: Operating Systems

§ Great scheduling resource:§ https://www.cs.rutgers.edu/~pxk/416/notes/07-

scheduling.html

§ CFS:§ https://en.wikipedia.org/wiki/Completely_Fair_Schedul

er

§ Scheduling figures from this lecture:Operating Systems: Three Easy Pieces § http://pages.cs.wisc.edu/~remzi/OSTEP/

References

10/8/20 CS 326: Operating Systems 45