Project Home
Project Home
Documents
Documents
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
wiki1116: Adaptive_Partitioning_Technology (Version 5)

History -- or What's a Partition and why it is Adpative?#

Some customers were asking us to run virtual machines, or even for ARINC 653 compliance so they could better manage their cpu time and memory resources. "Not real time" we thought. So we asked them what problems they really wanted to solve. It came down to three basic scenarios:
  1. The untrusted application: the ability to put a possibly nasty application into some kind of contrained box so it cannot hog resources to the point it will limit the est of the system
  2. Selling Througput: the ability to divide a system by capacity and performance into several pieces, sell each piece to a different customer, and then charge for the capabilities (speed, througput) of that piece
  3. Emergency Reserve: the ability to reserve a chunk of cpu time and memory so emergency recovery shell still work in overload and degreation situations.

Hmm. We thought. Virtualization-like solutions can do that but they are inflexible and not real time. We figured we could divide, or partition, system resouced in a way we can reconfigure on-the-fly and make it real-time too. So there.

Adaptive partitioning provides a set of technologies which allow the building of systems where different software components are partitioned, i.e. the software components run in their own sandboxes with guaranteed resources and protection from other software components in the system.

Three major trends in embedded systems are driving the need for partitioning:

  • Consolidation of the functionality currently handled by multiple microcontrollers into a single, high-end processor
  • Ability and requirement to run third-party code which may not be fully trusted
  • Requirement to sell off computer resources on same physical box (virtual routers)

The adaptive partitioning technology builds upon the core QNX architecture to deliver time and space resource guarantees, while still preserving POSIX semantics.

Included in the TDK are three main features:

  • The Adaptive Partitioning Scheduler (APS) which provides fair-share scheduling under overload, while preserving real-time, priority-based scheduling during normal operation
  • Resource guarantees for kernel objects. (Comming real soon now.)
  • Memory Partitioning using the typed memory mechanism