LinuxMM:

Just for my own sake, I'm calling every "memory pool"/zone/"resource group" a container here.

Requirements

Icing on the Cake

Software Zones

Use the existing Linux zone model to create sets of contiguous memory. Each of these is a subset of a current 'struct zone'. Each container gets one or more of these zones from which to allocate its pages. Pages shared between containers will be placed in centralized, "shared" zones.

This code's use of the existing Linux structures would let it do things like page reclaim with the existing algorithms.

Static Page Ownership (the classic CKRM way among others)

Add a pointer to 'struct page', and point it to an object that represents the container which caused the page's allocation. Don't change this until the page gets freed. Any other users of this page don't get charged for it.

Partial Page Ownership (Beancounters????)

Make sure that any additional users get charged, even if they are not the "first" user. Multiple users in a single container should not be charged multiple times. Overhead of figuring this out exactly could be more costly than other approaches.

Software Zones

Static Page Ownership

Partial Page Ownership

enforces memory limits

code overhead

storage overhead

Extra 'struct page' field

At least the cost of 'static' page ownership

runtime overhead

resize at runtime

Physical contiguity requirement will inhibit growth

creation at runtime

Must find physically contiguous area to use, can not simply take a bit from each existing container

recognize page sharing

requires a "shared" zone

doesn't recognize use by multiple containers, but could have a "shared" container

support overcommit

LinuxMM: SoftwareZones (last edited 2007-03-14 21:45:03 by bi01p1)