Presentation is loading. Please wait.

Presentation is loading. Please wait.

Linux Scheduler © DJ Foreman 3/8/20091. Objectives Response time Throughput for batch No starvation Accommodate high AND low priority © DJ Foreman 3/8/2009.

Similar presentations


Presentation on theme: "Linux Scheduler © DJ Foreman 3/8/20091. Objectives Response time Throughput for batch No starvation Accommodate high AND low priority © DJ Foreman 3/8/2009."— Presentation transcript:

1 Linux Scheduler © DJ Foreman 3/8/20091

2 Objectives Response time Throughput for batch No starvation Accommodate high AND low priority © DJ Foreman 3/8/2009 2

3 General Process Classifications Two schemes for classifying: –Traditional classes IO bound CPU bound –Alternative classes Interactive Batch Real-time –Video, robotics, sensor-based How to determine? © DJ Foreman 3/8/2009 3

4 Linux Scheduling Classes FIFOFIFO real-time process RRRound Robin real-time process Normalnon-real-time process © DJ Foreman 3/8/2009 4

5 Real-time Details © DJ Foreman 3/8/20095

6 Real-time Rules Priority 0(highest) - 99(lowest) –Program adjustable: sched_setparam() sched_setscheduler() FIFO - non-interruptible except –Higher priority –Blocked –Yields RR –Adds a time-slice to each thread –Suspends at end of slice © DJ Foreman 3/8/2009 6

7 Non-real-time Scheduling (Conventional processes) © DJ Foreman 3/8/20097

8 Rules Every process has a “static” priority –100(highest) – 139 (lowest) –Variable via nice() and setpriority() Base quantum (not a constant!) –If sp<120 20*(140-static priority) –If sp>=120 5*(140-static priority) Dynamic priority (also 100-139) –Max(100, min(sp-bonus+5,139)) –0<=bonus<=10 © DJ Foreman 3/8/2009 8

9 Rules (continued) Bonus –0-5 is a penalty –6-10 is a prize –Related to average sleep time OF THIS PROCESS (not of all Processes) Based on past history Some sample values: © DJ Foreman 3/8/2009 9 Average sleep timeBonus 0<=N<100ms0 300<=N<400ms3 600<=N<7006 900<=N<10009

10 Priority Arrays Two arrays: struct prio_array { intnr_active; unsigned long bitmap[BITMAP_SIZE]; structlist_headqueue[MAX_PRIO]; } With: 140 priority levels (max) wordsize=32 bits BITMAP_SIZE is 5 (last 20 bits ignored) © DJ Foreman 3/8/2009 10

11 The Bitmaps Active queues Time-slice-expired queues 1 bit/queue (140 queues) Based on the Intel “bsfl” instruction –Select least significant 1-bit © DJ Foreman 3/8/2009 11

12 Priority arrays – revisited Two arrays (active/expired): *listheads prio_array[2][140]; typedef struct listheads { // 2-way list of PDs @ this priority PD*next; PD*prev;} struct PD { PD *next; PD*prev; int PID; int prio; // etc } © DJ Foreman 3/8/2009 12

13 Scheduling Pick highest priority non-empty queue/list Tasks in queue/list scheduled © DJ Foreman 3/8/2009 13

14 References Lindsey, R., "What's New in the 2.6 Scheduler", Linux Journal, March 2004 Love, R., Linux Kernel Development, Indianapolis, IN, Sams Publishing, 2004 Understanding the Linux Kernel, Bovet & Cesati, O’Reilly Press, 2006 © DJ Foreman 3/8/2009 14


Download ppt "Linux Scheduler © DJ Foreman 3/8/20091. Objectives Response time Throughput for batch No starvation Accommodate high AND low priority © DJ Foreman 3/8/2009."

Similar presentations


Ads by Google