Linux Process Management Linux Implementation of Threads Threads

  • Slides: 14
Download presentation
Linux Process Management

Linux Process Management

Linux Implementation of Threads • Threads enable concurrent programming / true parallelism • Linux

Linux Implementation of Threads • Threads enable concurrent programming / true parallelism • Linux implementation of threads

PCS vs SCS • http: //www. cs. uic. edu/~jbell/Course. Notes/O perating. Systems/5_CPU_Scheduling. html

PCS vs SCS • http: //www. cs. uic. edu/~jbell/Course. Notes/O perating. Systems/5_CPU_Scheduling. html

Linux Process Scheduling • Policy – Policy is the behavior of the scheduler that

Linux Process Scheduling • Policy – Policy is the behavior of the scheduler that determines what runs when. A scheduler’s policy often determines the overall feel of a system. – I/O-Bound vs. Processor-Bound Processes • Scheduler policy in Unix systems tends to explicitly favor I/O-bound processes • Linux. .

Process priority • 2 ranges – nice value • -20 to +19 with default

Process priority • 2 ranges – nice value • -20 to +19 with default of 0 • Larger nice values correspond to lower priority • ps –el – real-time priority • 0 -99 • Higher values correspond to higher priority • Used for real-time processes – always higher than normal processes.

The scheduling policy in action

The scheduling policy in action

Process Scheduling in Unix • Based on traditional methods – Timeslice – Priority (Priority

Process Scheduling in Unix • Based on traditional methods – Timeslice – Priority (Priority exported to user in nice values) • Problematic – Two low priority processes swap to much – Timeslice / priority correlation – Timeslice measurement (timer click)

The scheduling policy in action • Linux: Completely Fair Scheduling – Model process scheduling

The scheduling policy in action • Linux: Completely Fair Scheduling – Model process scheduling as if the system had an ideal perfectly multitasking processor. • That is, each process receives 1/n of the processor’s time, where n is the number of runnable processes and we’d schedule them for intimately small durations, so that in any measureable period we’d have urn all n processes for the same time. • Conceptually: we are running 2 processes simultaneously each using 50% of CPU

Completely Fair Scheduling (CFS) • CFS will run each process for some amount of

Completely Fair Scheduling (CFS) • CFS will run each process for some amount of time, round-robin, selecting next the process that has run the least.

Completely Fair Scheduling (CFS) Determine Time allotted to run • CFS calculates how long

Completely Fair Scheduling (CFS) Determine Time allotted to run • CFS calculates how long a process should run as a function of the total number of runnable processes • CFS uses the nice value to weight the proportion of the processor a process should receive.

Completely Fair Scheduling (CFS) Determine Time allotted to run • • Each process then

Completely Fair Scheduling (CFS) Determine Time allotted to run • • Each process then runs for a “time-slice” proportional to its weight divided by the total weight of all runnable threads.

Completely Fair Scheduling (CFS) Picking the next task • Red/black trees – Balanced tree

Completely Fair Scheduling (CFS) Picking the next task • Red/black trees – Balanced tree • Leftmost leaf contains process with the smallest runtime (time spent running) normalized by the number of runnable processes and by its ‘weight’

Kernel Preemption • Unix kernel is non-preemptive • Linux kernel is pre-emptive

Kernel Preemption • Unix kernel is non-preemptive • Linux kernel is pre-emptive

Real-Time Scheduling Policies • SCHED_FIFO and SCHED_RR • Not managed by CFS, but by

Real-Time Scheduling Policies • SCHED_FIFO and SCHED_RR • Not managed by CFS, but by a separate realtime scheduler. • Soft real-time behavior