http://oss.oracle.com/projects/tmem/
More formally, Transcendent Memory is both: (a) a collection of idle physical memory in a system and (b) an API for providing indirect access to that memory. A tmem host (such as in a hypervisor in a virtualized system) maintains and manages one or more tmem pools of physical memory. One or more tmem clients (such as a guest OS in a virtualized system) can access this memory only indirectly via a well-defined tmem API which imposes a carefully-crafted set of rules and restrictions. Through proper use of the tmem API, a tmem client may utilize a tmem pool as an extension to its memory, thus reducing disk I/O and improving performance. As an added bonus, tmem is compatible and complementary -- indeed even supplementary -- to other physical memory management mechanisms such as automated ballooning and page-sharing.(** While tmem's primary goal is to better optimize the multiplexing of physical memory between guests in a virtualized system, we believe tmem may be found useful for a native operating system on a physical system too.)
The tmem approach is flexible and we have already identified four different use models that can benefit a tmem client:
* A second-chance clean page cache called precache or hcache
* A fast swap "device" called preswap or hswap
* A shared page cache for remote clustered filesystems
* An interdomain shared memory mechanism
A get of a previously successfully put page will probably be successful, but sometimes the get may fail. In other words, persistence is not guaranteed! Thus, a client can only put clean pages not dirty pages into the precache. This is a minor inconvenience for an operating system, but in a virtualized environment the restriction is extremely important because any page in the pool can be instantly reclaimed by the hypervisor for other needs!