Linux Process Management

advertisement
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/Op
eratingSystems/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.
The scheduling policy in action
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 realtime scheduler.
• Soft real-time behavior
Download