07-05-2012, 12:43 PM
ADAPTIVE PARTITION SCHEDULER
ABSTRACT:
Adaptive Partition Schedulers are a relatively new type of partition scheduler, pioneered with the most recent version of the QNX operating system. Adaptive Partitioning (or AP) allows the real-time system designer to request that a percentage of processing resources be reserved for a particular subsystem (group of threads and/or processes). The operating systems priority driven pre-emptive scheduler will behave in the same way that a non-AP system would until the system is overloaded (i.e. system-wide there is more computation to perform, than the processor is capable of sustaining over the long term). During overload, the AP scheduler enforces hard limits on total run-time for the subsystems within a partition (as dictated by the allocated percentage of processor bandwidth for the particular partition). If the system is not overloaded, a partition that is allocated (for example) 10% of the processor bandwidth, can, in fact, use more than 10%, as it will borrow from the spare budget of other partitions (but will be required to pay it back later). This is very useful for the non real-time subsystems that experience variable load, since these subsystems can make use of spare budget from hard real-time partitions in order to make more forward progress than they would in a Fixed Partition Scheduler such as ARINC-653, but without impacting the hard real-time subsystems deadlines
The adaptive partitioning scheduler is an optional thread scheduler that lets you guarantee minimum percentages of the CPU's throughput to groups of threads, processes, or applications. The percentage of the CPU alloted to a partition is called a budget.The adaptive partitioning scheduler has been designed on top of the core QNX Neutrino architecture to solve primarily two problems in embedded systems design:
• proper working in fully loaded conditions
• preventing unimportant or untrusted applications from monopolizing the system
We call our partitions "adaptive" because their contents are dynamic:
• You can dynamically launch an application into a partition.
• Child threads and child processes automatically run in the same partition as their parent.
By default, when you use the standard Neutrino send-receive-reply messaging, message receivers automatically run in the partition of the message sender while they're processing that message. That means that all resource managers, such as drivers and filesystems, automatically bill CPU time (except overhead) to the budget of their clients.
This seminar has the humble aim to convey the main ideas on "ADAPTIVE PARTITION SCHEDULER".