540 likes | 1.71k Views
Linux Process Management . Linux Implementation of Threads. Threads enable concurrent programming / true parallelism Linux implementation of threads. PCS vs SCS. http://www.cs.uic.edu/~ jbell/CourseNotes/OperatingSystems/5_CPU_Scheduling.html. Linux Process Scheduling. Policy
E N D
Linux Implementation of Threads • Threads enable concurrent programming / true parallelism • Linux implementation of threads
PCS vs SCS • http://www.cs.uic.edu/~jbell/CourseNotes/OperatingSystems/5_CPU_Scheduling.html
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 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.
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 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 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 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 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 • 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
Real-Time Scheduling Policies • SCHED_FIFO and SCHED_RR • Not managed by CFS, but by a separate real-time scheduler. • Soft real-time behavior