What is Adaptive Partitioning?

Updated: May 06, 2022

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 could also include any shared resource, such as memory and file space (disk or flash).

Note: QNX Neutrino adaptive partitioning supports only the allocation of CPU time via the thread scheduler.

Traditional partitions are static and work optimally when 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.

Many resource-partitioning systems take their model from CPU virtualization, where the objective is to try to divide a computer into a set of smaller computers that interact as little as possible (into a number of boxes). This approach isn't very flexible; every thread, process, and byte of memory is in exactly one box, and it can never move. Adaptive partitioning takes a much more flexible view.

To begin, QNX Neutrino partitions are adaptive because:

As a result, adaptive partitions aren't boxes; they're much more powerful. In addition to being adaptive, time partitions allow you to easily model the fundamentally different behavior of CPU time when viewed as a resource.

Note: Use a partition to encapsulate wild processes. You can create an application partition for one or more processes that potentially run on high priorities. Then, start the potentially problematic application(s) inside that partition so that when a situation like this arises, the rest of the system will continue to function.

An adaptive partition is a named set of rules. The rules are selected to control the global resource behavior of the system. When a process or thread is associated with a particular scheduler partition, then its actions are governed by the rules of that partition at that time.

For example, adaptive partitioning is similar to people who belong to clubs. Each person can join several different clubs. They can even move from one club to another club at times. However, while they are at a particular club, they agree to abide by the rules of that specific club.