Project Home
Project Home
Documents
Documents
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
wiki1115: Memory_Partitioning_Technology (Version 7)

Adaptive Partitioning - Memory #

Aka APM

What is it?#

It's a flexible, per memory class partitioning mechanism that allows for the independent specification of both memory resource guarantees (reservations) and restrictions for each process in a running system.

Memory Partitioning is part of an overall resource partitioning strategy. See Adaptive Partitioning.

Table of Contents#

  1. QNX Designer's Documentation
  1. Hacking
    • Where to find the source code - coming soon
    • How to build APM - coming soon
  2. Links to user documention:

FAQ#

Please read Memory Partitioning - Design and Architecture Overview. It may help answer some of your questions

What do you mean by a memory class?#

In the context of memory partitioning, a memory class refers specifically to an independently partition-able segment of non-overlapping memory. The segments are established at startup and refer to the syspage asinfo entries (visible with pidin syspage=asinfo). The system architect is free to ascribe any attributes or purpose to the memory segments (with the exception of the sysram which is the class used for general allocations) as memory partitioning does not impose any such attributes. Once defined in startup, and subsequently added to the partitioning name space, each of these segments is referred to as a class (or type if you prefer) for the purpose of partitioning and allocation/deallocation. The sysram memory class is special, in that it always exists and is used for internal (kernel) allocations as well as unspecified (un-typed) allocations.

Example:

Let's suppose a custom board had some SRAM implemented within an custom FPGA (which likely also had additional functionality which made use of the SRAM). This segment of memory would reside at a particular physical address and would be considered a different class of memory, not only because it truly has different storage attributes (faster, and perhaps smaller than the DRAM used for general storage) but also because it serves a different purpose within the system. Also suppose that there are several independent processes which all wished to allocate portions of the memory class but that some of these processes were more important than others. Memory partitioning could be used to partition this memory class into several partitions, perhaps of different size and type and allow the processes requiring this memory class to be independently associated with specific partitions. The more important processes could be guaranteed to have access to the configured amounts of this memory class independent of any other memory classes it required or the demands of other processes. All of the processes could be "coded" the same way to simply allocate memory of the specified class without any of the interprocess coordination that would otherwise be required to ensure the priority of allocation to more important processes.

How do I allocate memory of a different class?#

We (currently) rely on the POSIX typed memory interfaces for this.

How can I use this?#

See the Example above under What do you mean by a memory class?

What is the difference between the minimum size attribute and the maximum size attribute?

When will this be released?

We're working on it. The likely time frame will be Jan 2008 and it will be released as part of the overall adaptive partitioning package.