-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
staging: ramster: ramster-specific changes to zcache/tmem
RAMster implements peer-to-peer transcendent memory, allowing a "cluster" of kernels to dynamically pool their RAM. This patch incorporates changes transforming zcache to work with a remote store. In tmem.[ch], new "repatriate" (provoke async get) and "localify" (handle incoming data resulting from an async get) routines combine with a handful of changes to existing pamops interfaces allow the generic tmem code to support asynchronous operations. Also, a new tmem_xhandle struct groups together key information that must be passed to remote tmem stores. Zcache-main.c is augmented with a large amount of ramster-specific code to handle remote operations and "foreign" pages on both ends of the "remotify" protocol. New "foreign" pools are auto-created on demand. A "selfshrinker" thread periodically repatriates remote persistent pages when local memory conditions allow. For certain operations, a queue is necessary to guarantee strict ordering as out-of-order puts/flushes can cause strange race conditions. Pampd pointers now either point to local memory OR describe a remote page; to allow the same 64-bits to describe either, the LSB is used to differentiate. Some acrobatics must be performed to ensure local memory is available to handle a remote persistent get, or deal with the data directly anyway if the malloc failed. Lots of ramster-specific statistics are available via sysfs. Note: Some debug ifdefs left in for now. Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
- Loading branch information
Dan Magenheimer
authored and
Greg Kroah-Hartman
committed
Feb 15, 2012
1 parent
b95e141
commit c89126e
Showing
5 changed files
with
1,741 additions
and
292 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,13 +1,13 @@ | ||
config ZCACHE | ||
tristate "Dynamic compression of swap pages and clean pagecache pages" | ||
depends on CLEANCACHE || FRONTSWAP | ||
select XVMALLOC | ||
config RAMSTER | ||
bool "Cross-machine RAM capacity sharing, aka peer-to-peer tmem" | ||
depends on (CLEANCACHE || FRONTSWAP) && CONFIGFS_FS && !ZCACHE && !XVMALLOC && !HIGHMEM | ||
select LZO_COMPRESS | ||
select LZO_DECOMPRESS | ||
default n | ||
help | ||
Zcache doubles RAM efficiency while providing a significant | ||
performance boosts on many workloads. Zcache uses lzo1x | ||
compression and an in-kernel implementation of transcendent | ||
memory to store clean page cache pages and swap in RAM, | ||
providing a noticeable reduction in disk I/O. | ||
RAMster allows RAM on other machines in a cluster to be utilized | ||
dynamically and symmetrically instead of swapping to a local swap | ||
disk, thus improving performance on memory-constrained workloads | ||
while minimizing total RAM across the cluster. RAMster, like | ||
zcache, compresses swap pages into local RAM, but then remotifies | ||
the compressed pages to another node in the RAMster cluster. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,3 +1 @@ | ||
zcache-y := zcache-main.o tmem.o | ||
|
||
obj-$(CONFIG_ZCACHE) += zcache.o | ||
obj-$(CONFIG_RAMSTER) += zcache-main.o tmem.o r2net.o xvmalloc.o cluster/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.