Top Banner
cs4414 Fall 2013 University of Virginia David Evans Class 11: Smarter Schedulin g
41

Smarter Scheduling

May 28, 2015

Download

Education

David Evans

http://rust-class.org

Smarter scheduling strategies

Priority Inversion
Lottery Scheduling and Stride Scheduling
History os the Linux scheduler
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Smarter Scheduling

cs4414 Fall 2013University of Virginia

David Evans

Class 11: Smarter

Scheduling

Page 2: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 2

Plan for Today

• Course Schedule Update• Norvig Numbers • Priority Pre-Emptive Scheduling• Lottery Scheduling• Stride Scheduling• What Linux Does (“Completely Fair

Scheduler”)

Page 3: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 3

Course Schedule

Original (Syllabus)PS1: Simple server (10 Sept)PS2: Shell (24 Sept)PS3: Web server (10 Oct)Midterm (10 Oct)PS4: IceBox (5 Nov)Project: Open (5 Dec)

RevisedPS1: zhttpto (10 Sept)PS2: gash (30 Sept + demos)

Today is 3 Oct and PS3 is not yet out!

Page 4: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 4

Course Schedule

Original (Syllabus)PS1: Simple server (10 Sept)PS2: Shell (24 Sept)PS3: Web server (10 Oct)Midterm (10 Oct)PS4: IceBox (5 Nov)Project: Open (5 Dec)

RevisedPS1: zhttpto (10 Sept)PS2: gash (30 Sept + demos)Midterm (due 14 Oct)PS3: zhtta (due 28 Oct)

Project: open (due 5 Dec)

Note: if you already have a great idea for a project that will be more worthwhile for you than PS3, you can make a case for doing that instead of PS3 also.

Page 5: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 5

Oh no…what can we possibly do with no Problem Set to work on?

Page 6: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 6

From Class 3…

Page 7: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 7

Page 8: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 8

Updating the “Norvig Numbers”• We don’t just want the numbers, we want programs

that can produce the number.• Combined efforts and talents of this class should be

able to make a really useful list (and learn a lot)• Post in Piazza forum with details– Everyone should contribute something– Can work in teams of any size (1-60+, but larger teams

should make more interesting contributions)– Claim and justify a number you will contribute (and then,

start working on the program to do it) – First Come, First Serve

Page 10: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 10

Scheduling

Page 11: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 11

Pre-emptive Priority Scheduling

• Always run the highest priority process that is ready to run

• Round-robin schedule among equally high, ready to run, highest-priority processes

P 629 P 124Priority 0:

P 528Priority 1:

P 44Priority 2: P 815 P 516

Waiting:

Memory Read P 131

Network Data P 221

Shared Bus P 1209

Page 12: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 12

Mars Curiosity (2012)

Page 13: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 13

Mars Pathfinder (1997)

Page 14: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 14

Pathfinder OS:Pre-emptive Priority Scheduling

• Always run the highest priority process that is ready to run

• Round-robin schedule among equally high, ready to run, highest-priority processes

CPUShared Bus

Radio

Camera

Flash MemoryActuators

Page 15: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 15

Priority InversionTask 1 (scheduler) – highest priority (Priority = 1)

Task 2 (send data) – (Priority = 4)

Task 3 (science analysis) – lowest priority (Priority = 97)

CPU

Shared Bus

Radio

Camera

Flash MemoryActuators

Page 16: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 16

How should we solve priority inversion?

Page 17: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 17

Priority 0:

P 528Priority 1:

P 44Priority 2: P 815 P 516

Waiting:

Memory Read P 131

Network Data P 221

Shared Bus P 1209 PRI: 0Holds Bus Lock

Page 18: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 18

Priority

Should my MacBook use a priority pre-emptive scheduler with priority inheritance?

Page 19: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 19

Kinds of Processes“Compute-Bound”

P1

“I/O-Bound”

P2 wait for disk… P2 wait for network… P2 wait for user…

“Real Time”P3

need frame ^ need frame ^ need frame ^ need frame ^

P3 P3 P3

Page 20: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 20

Carl Waldspurger

Page 21: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 21

Lottery Scheduling

Page 22: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 22

Lottery Scheduling

• Each user (process) gets a share of the “tickets”– e.g., 1000 total tickets, 20 processes each get 50

tickets (or more/less weighted by priority)• User/process can distribute tickets however it

wants– Among its own threads, can “loan” to other

processes’ threads• Scheduler: randomly picks a ticket– Associated thread gets to run for that time slice

Silly aside: what does “A/B” mean in English?

Page 23: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 23

Do not use “/” except to mean divide

“The University of Virginia is an equal opportunity/affirmative action

employer.”

On 10/2/13 3:56 PM, [name removed] wrote:> Mr. Evans,> The forward slash is commonly used to represent "and" in this context.

“…the accommodation the employee and/or the employee’s doctor/medical professional believe will enable the employee to perform the essential functions of the position. The employee should provide his/her doctor/medical professional with the definition of a disability…”

Page 24: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 24

Priority Pre-Emptive Lottery Scheduling

Page 25: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 25

Page 26: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 26

Page 27: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 27

What is the running time?

> uname -aLinux power2 3.2.0-49-generic #75-Ubuntu SMP Tue Jun 18 17:39:32 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux> sysctl kernel.pid_maxkernel.pid_max = 32768

Page 28: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 28

Linux Scheduler before V2.6 (2002)

• Three types of processes:#define SCHED_OTHER 0#define SCHED_FIFO 1#define SCHED_RR 2

• Not pre-emptive: only user-level processes could be pre-empted

• Select next process according to “goodness” function

Normal user processes

Non-prementable

Real-time round-robin

Page 29: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 29

/* linux/kernel/sched.c* This is the function that decides how desirable a process is.* You can weigh different processes against each other depending * on what CPU they've run on lately etc to try to handle cache * and TLB miss penalties. * * Return values: * -1000: never select this * 0: out of time, recalculate counters (but it might still * be * selected) * +ve: "goodness" value (the larger, the better) * +1000: realtime process, select this. */static inline int goodness(struct task_struct * p, int this_cpu, structmm_struct *this_mm){ int weight; /* * Realtime process, select the first one on the * runqueue (taking priorities within processes * into account). */ if (p->policy != SCHED_OTHER) { weight = 1000 + p->rt_priority; goto out; } /* * Give the process a first-approximation goodness value * according to the number of clock-ticks it has left. * * Don't do any other calculations if the time slice is * over.. */ weight = p->counter; if (!weight) goto out;

#ifdef __SMP__ /* Give a largish advantage to the same processor... */ /* (this is equivalent to penalizing other processors) */ if (p->processor == this_cpu) weight += PROC_CHANGE_PENALTY;#endif /* .. and a slight advantage to the current MM */ if (p->mm == this_mm) weight += 1; weight += p->priority;out: return weight;}

/* linux/kernel/sched.c* This is the function that decides how desirable a process is.* You can weigh different processes against each other depending * on what CPU they've run on lately etc to try to handle cache * and TLB miss penalties. * * Return values: * -1000: never select this * 0: out of time, recalculate counters (but it might still * be * selected) * +ve: "goodness" value (the larger, the better) * +1000: realtime process, select this. */static inline int goodness(struct task_struct * p, int this_cpu, struct mm_struct *this_mm){ …

Page 30: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 30

static inline int goodness(struct task_struct * p, int this_cpu, struct mm_struct *this_mm){ int weight; /* Realtime process, select the first one on the runqueue (taking priorities into account). */ if (p->policy != SCHED_OTHER) { weight = 1000 + p->rt_priority; goto out; } /* Give the process a first-approximation goodness value according to the number of clock-ticks it has left. Don't do any other calculations if the time slice is over.. */ weight = p->counter; if (!weight) goto out;#ifdef __SMP__ /* Give a largish advantage to the same processor... (equivalent to penalizing other processors) */ if (p->processor == this_cpu) weight += PROC_CHANGE_PENALTY;#endif /* .. and a slight advantage to the current MM (memory segment) */ if (p->mm == this_mm) weight += 1; weight += p->priority;out: return weight;}

Page 31: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 31

What is the running time of the Linux 2.2-2.5 Scheduler?

Page 32: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 32

It was called the “O(n) scheduler”

Page 33: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 33

Linux 2.6 Scheduler (2003-2007)

• 140 different queues (for each processor)– 0-99 for “real time” processes– 100-139 for “normal” processes

• Bit vector keeps track of which queues have ready to run process

• Scheduler picks first process from highest priority queue with a ready process– Give it time quantum that scales with priority

Page 34: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 34

struct runqueue { struct prioarray *active; struct prioarray *expired; struct prioarray arrays[2];};

struct prioarray{ int nr_active; /* # Runnable */ unsigned long bitmap[5]; struct list_head queue[140];};

Page 35: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 35

What is the running time of the Linux 2.6 Scheduler?

Page 36: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 36

(Sadly, O(1) scheduler has no Facebook page.)

Page 37: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 37

Linux V2.6.23+ Scheduler

Page 38: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 38

This is exactly stride scheduling (but with different terminology)!

Rotating Staircase Deadline Scheduler

Page 39: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 39

What is the running time of the Linux 2.6.23+ Scheduler?

Not called the O(log N) scheduler – by Linux 2.6.23 marketingmatters: “Completely Fair Scheduler”

Page 40: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 40

What is log2 1 000 000?

Page 41: Smarter Scheduling

April 12, 2023 University of Virginia cs4414 41

Charge

• Claim your “Norvig Number” early!– No penalty if you decide to switch later

• Stride scheduling works!– Use it to manage your real life: much smarter than

priority pre-emptive (never finish anything) or first-come first-served or earliest-deadline-first

– Unless you like to live serendipitously: then you should use lottery scheduling