Caution: This version of this document is no longer maintained. For the latest documentation, see

What is Adaptive Partitioning?

This chapter includes:

What are partitions?

As described in the Adaptive Partitioning chapter of the System Architecture guide, a partition is a virtual wall that separates competing processes or threads.

Partitions let the system designer allocate minimum amounts of system resources to each set of processes or threads. The primary resource considered is CPU time, but can also include any shared resource such as memory and file space (disk or flash).

Note: The initial version of Adaptive Partitioning implements the budgeting of CPU time, via the adaptive partitioning scheduler. Future releases will address budgeting memory and other resources.

Traditional partitions are static and work best if there's little or no dynamic deployment of software; in dynamic systems, static partitions can be inefficient.

Adaptive partitions are more flexible because:

You can introduce adaptive partitioning without changing -- or even recompiling -- your application code, although you do have to rebuild your system's OS image.

System requirements

For adaptive partitioning scheduling to operate properly, your system should meet some requirements:

Adaptive partitioning scheduler

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 time allotted to a partition is called a budget.

The adaptive partitioning scheduler has been designed on top of the core QNX Neutrino architecture primarily to solve these problems in embedded systems design:

Before looking at the details of the scheduler, let's give it a try.