460 likes | 557 Views
This article discusses the integration of a general hierarchy of soft real-time schedulers in operating systems to enhance performance for diverse application scheduling requirements. It explores the Hierarchical Loadable Scheduler (HLS) architecture and augmented CPU reservations, providing guarantees for reliable CPU allocation.
E N D
Using Hierarchical Scheduling to Support Soft Real-Time Applications in General-Purpose Operating Systems John Regehr March 20, 2001
Outline • Motivation and Approach • Guarantees • HLS Design • Augmented Reservations • Conclusions and Demo
Overview of Contributions • A general hierarchy of soft real-time schedulers can provide guaranteed scheduling behavior • The Hierarchical Loadable Scheduler (HLS) architecture… • Can be efficiently implemented in a general-purpose OS • Increases application performance compared to case where scheduler and apps are mismatched • Augmented CPU reservations increase predictability when the OS steals CPU time from real-time applications
Motivation • People use general-purpose OSs (GPOSs) for many kinds of tasks • e.g. Unix, Windows, MacOS variants • Compatibility, commodity, convenience • Applications have diverse scheduling requirements • Time-sharing • Soft real-time • Isolation • Co-scheduling between processors or machines
The Problem • One size does not fit all • Supporting evidence: companies sell scheduler extensions • Ensim: ServerXchange • Sun: Solaris Resource Manager • Aurema: Active Resource Management • TimeSys: Linux/RT
Motivating Data: Unfair CPU Allocation Between Users • User 1 gets little CPU time when User 2 creates many threads
Approach • Allow a hierarchy of CPU schedulers to control processor allocation • Thesis Statement: • It is useful and feasible to extend a GPOS with a general, heterogeneous scheduling hierarchy. • A heterogeneous hierarchy employs different schedulers • A general hierarchy does not impose a fixed scheduling model
FP RES SFQ Example Hierarchy H L J Video Player Word Processor Voice Recognition
Time Scales • Long: • System is used in a particular way • Duration: usually uptime of a system or longer • Medium: • Applications start, end, and change requirements • Duration: seconds, minutes, or longer • Short: • Individual scheduling decisions made by schedulers within the hierarchy • Duration: milliseconds or 10s of ms
What Microsoft Should Do • Put HLS into consumer Windows! • By default • Support interactive, batch, and multimedia applications for a single user • However, also include • Library of useful schedulers and API for composing them • API for implementing new schedulers
Reminder • HLS is an architecture for flexibly composing schedulers
Outline • Motivation and Approach • Guarantees • HLS Design • Augmented Reservations • Conclusions and Demo
Guarantee • Definition: • Ongoing lower (and possibly upper) bound on CPU allocation • Goals: • Describe the scheduling behavior required and provided by schedulers, and required by applications • Permit these behaviors to be reasoned about • Syntax: • TYPE p1 p2 …
Example Guarantees • 100% of a CPU: • ALL • Strictly best-effort scheduling: • NULL • Proportional share: • PS s • PSBE sδ • CPU Reservations: • RESBS x y, RESBH x y • RESCS x y, RESCH x y
CPU Reservation Guarantees • Hard / Soft: • “Hard CPU reservation” ≠ hard real-time • Soft reservations guarantee a lower bound • Hard reservations also guarantee an upper bound • Basic / Continuous:
Guarantee Conversion by Schedulers • Schedulers require and provide guarantees • SFQ: PSBE → PSBE+ • Rez: ALL → RESBH+ • Schedulers determine if specific guarantees can be provided • ALL → RESBH 5 10, RESBH 25 100 • EDF-based reservation scheduler • Naïve rate monotonic reservation scheduler
Selected Conversions by Schedulers • Full table contains 23 schedulers
Guarantee Conversion by Rewrite Rules • Guarantees can be converted without a scheduler, using rewrite rules • Trivial examples: • PSBE sδ→ PS s • RESBH x y → RESBS x y • Non-trivial examples: • RESBS x y → RESCS x (2y-x+c) for any c ≥ 0 • RESCS x y → PSBE (x/y) x/y (y-x)
Partial Rewrite Rule Table T = rewrite rule exists F = rewrite rule does not exist
Another View of Some Rewrite Rules RESBH RESBS PSBE RESCH RESCS PS
FP RES SFQ Guarantees in Action ALL ALL NULL * RESBH 5 33 * RESBH 10 20 J RESBS 10 20 → Video Player PSBE 0.5 10 PSBE 0.3 35 PSBE 0.1 15 Word Processor Voice Recognition
Related Work for Hierarchical Guarantees • Hierarchical start-time fair queuing [Goyal et al. 96] • Uniformly slower processors • Open environment for real-time applications [Deng et al. 99] • BSS-I and PShED [Lipari et al. 00]
Guarantee Contributions • Created a framework for reasoning about composition of schedulers • Derived rewrite rules • Integrated more than 20 schedulers • Guarantees provide a model of soft real-time CPU allocation • Independent of particular scheduling algorithms • Developers can program to • Users can ensure that application requirements are met
Outline • Motivation and Approach • Guarantees • HLS Design • Augmented Reservations • Conclusions and Demo
Inside a Non-Hierarchical CPU Scheduler CPU • Scheduling decisions are made in response to timers and thread state changes SCHEDULER W W R W T1 T2 T3 T4 T5
Inside a Hierarchical CPU Scheduler parent virtual processor VP1 • Distinguishing feature of hierarchical schedulers: revocation SCHEDULER R W W R R W child virtual processors VP2 VP3 VP4 VP5 VP6
Hierarchical Scheduler Infrastructure (HSI) Design • Schedulers are implemented by code libraries loaded into the kernel • Scheduler instances are active entities in the hierarchy • Virtual Processors • Represent potential for physical processor allocation • Used to notify schedulers
Scheduler Notifications • Hierarchical infrastructure notifies a scheduler whenever: • A child VP requests or releases a processor • A parent VP grants or revokes a processor • A timer expires • Threads implicitly notify schedulers when they block and unblock • Notifications are cheap: virtual function calls
HSI and Scheduler Implementation • HSI runs in Windows 2000 kernel • Serialized by a spinlock • Added ~3100 lines of code • Loadable schedulers: • Time sharing / fixed priority, CPU reservation, proportional share, join • A representative set of schedulers, but not a complete one • Implemented Rez in about two days, PS scheduler in a few hours
Performance • Test machine is a 500MHz Pentium III • Most mode change operations run in less than 40μs • Create / destroy scheduler instance, begin / end CPU reservation, etc. • Median context switch time • Unmodified Windows 2000: 7.1μs • HLS time-sharing scheduler: 11.7μs • Cost of each extra level in the scheduling hierarchy is 0.96μs • Many opportunities for optimization
Scheduling a Real-Time, CPU-Bound Application • Synthetic test application • Represents a virtual environment or game • Must provide 1 frame per 33ms (~30 FPS) • 10ms of CPU time for each frame • More frames are acceptable and desirable • Machine also runs background work • Goals • Application should never miss a deadline • Non-real-time work should make progress
Performance Data: CPU Bound Real-Time Application • 30-second runs
Related Work for HSI • Scheduler activations • [Anderson et al. 91] • CPU inheritance scheduling • [Ford and Susarla 96] • Vassal • [Candea and Jones 98]
Contributions • Virtual processors are a novel extension of scheduler activations [Anderson et al. 91] • Permit a wide range of schedulers to dynamically create a scheduling hierarchy in kernel of a GPOS • First system to do this • Simplifies scheduling programming model by hiding OS and hardware complexities
Outline • Motivation and Approach • Guarantees • HLS Design • Augmented Reservations • Conclusions and Demo
Problem: Stolen Time • We have assumed until now that the OS does not interfere with guarantees • However, while processing asynchronous data the OS may steal CPU time from applications • Time used by bottom-half mechanisms is not accounted for correctly • A solution: • Augmented CPU reservations
Augmented Reservations • Strategy: accurately measure stolen time in order to compensate threads • Rez-C: avoid “charging” threads for stolen time • Rez-FB: use a feedback loop to assign a larger CPU reservation so requirements are met even when time is stolen • Implemented as HLS schedulers
Related Work for Augmented Reservations • Scheduling bottom-half activity • Mach [Rashid et al. 89] • Nemesis [Leslie et al. 96] • Scheduling bottom-half activity in a GPOS • FreeBSD [Jeffay et al. 98] • Feedback-based scheduling • FC-EDF [Lu et al. 99] • Moving code into scheduled contexts • Soft modems [Jones and Saroiu 01]
Augmented Reservation Contributions • Rez-C and Rez-FB • 6% over-reservation to eliminate most deadline misses • vs. 24% over-reservation for plain Rez • Quantified severity of stolen time • Windows 2000 + Rez and Linux/RT • Network, disk, software modem, USB
Outline • Motivation and Approach • Guarantees • HLS Design • Augmented Reservations • Conclusions and Demo
Conclusions • HLS is feasible: • Composition of soft real-time schedulers can be reasoned about • Implemented and performs well • HLS is useful: • Permits scheduling behavior to be tailored to specific needs • New schedulers can be implemented more easily
FP H L L TS PS RES HLS Demonstration • All threads scheduled by default time-sharing scheduler • Create a CPU reservation • Make proportional share scheduler the default and move time-sharing threads • End CPU reservation T T TTTTTT TTTTTT TTTTTT TTTTTT TTTTTT All threads scheduled by default time-sharing scheduler Create a CPU reservation Make proportional share scheduler the default and move time-sharing threads End CPU reservation All threads scheduled by default time-sharing scheduler Create a CPU reservation Make proportional share scheduler the default and move time-sharing threads End CPU reservation All threads scheduled by default time-sharing scheduler All threads scheduled by default time-sharing scheduler Create a CPU reservation Make proportional share scheduler the default and move time-sharing threads End CPU reservation
The End • Papers and more info at: http://www.cs.virginia.edu/~jdr8d