summaryrefslogtreecommitdiff
path: root/drivers/staging/ramster/Kconfig
diff options
context:
space:
mode:
authorDan Magenheimer <dan.magenheimer@oracle.com>2012-09-05 20:45:01 (GMT)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2012-09-06 00:07:39 (GMT)
commit14c9fda5c477305ccf0d82ccbdfd47f66a557d65 (patch)
tree49ad46af72be7e5ffc1ec25750feeaad403e38a3 /drivers/staging/ramster/Kconfig
parentfaca2ef77abf1983e87d36b14bc181efb983979a (diff)
downloadlinux-fsl-qoriq-14c9fda5c477305ccf0d82ccbdfd47f66a557d65.tar.xz
staging: ramster: place ramster codebase on top of new zcache2 codebase
[V2: rebased to apply to 20120905 staging-next, no other changes] This slightly modified ramster codebase is now built entirely on zcache2 and all ramster-specific code is fully contained in a subdirectory. Ramster extends zcache2 to allow pages compressed via zcache2 to be "load-balanced" across machines in a cluster. Control and data communication is done via kernel sockets, and cluster configuration and management is heavily leveraged from the ocfs2 cluster filesystem. There are no new features since the codebase introduced into staging at 3.4. Some cleanup was performed though: 1) Interfaces directly with new zbud 2) Debugfs now used instead of sysfs where possible. Sysfs still used where necessary for userland cluster configuration. Ramster is very much a work-in-progress but also does really work! RAMSTER HIGH LEVEL OVERVIEW (from original V5 posting in Feb 2012) RAMster implements peer-to-peer transcendent memory, allowing a "cluster" of kernels to dynamically pool their RAM so that a RAM-hungry workload on one machine can temporarily and transparently utilize RAM on another machine which is presumably idle or running a non-RAM-hungry workload. Other than the already-merged cleancache patchset and frontswap patchset, no core kernel changes are currently required. (Note that, unlike previous public descriptions of RAMster, this implementation does NOT require synchronous "gets" or core networking changes. As of V5, it also co-exists with ocfs2.) RAMster combines a clustering and messaging foundation based on the ocfs2 cluster layer with the in-kernel compression implementation of zcache2, and adds code to glue them together. When a page is "put" to RAMster, it is compressed and stored locally. Periodically, a thread will "remotify" these pages by sending them via messages to a remote machine. When the page is later needed as indicated by a page fault, a "get" is issued. If the data is local, it is uncompressed and the fault is resolved. If the data is remote, a message is sent to fetch the data and the faulting thread sleeps; when the data arrives, the thread awakens, the data is decompressed and the fault is resolved. As of V5, clusters up to eight nodes are supported; each node can remotify pages to one specified node, so clusters can be configured as clients to a "memory server". Some simple policy is in place that will need to be refined over time. Larger clusters and fault-resistant protocols can also be added over time. A HOW-TO is available at: http://oss.oracle.com/projects/tmem/dist/files/RAMster/HOWTO-120817 Acked-by: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Signed-off-by: Dan Magenheimer <dan.magenheimer@oracle.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/staging/ramster/Kconfig')
-rw-r--r--drivers/staging/ramster/Kconfig14
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/staging/ramster/Kconfig b/drivers/staging/ramster/Kconfig
index 7db0592..843c541 100644
--- a/drivers/staging/ramster/Kconfig
+++ b/drivers/staging/ramster/Kconfig
@@ -14,3 +14,17 @@ config ZCACHE2
technical disagreements. It is intended that they will merge
again in the future. Until then, zcache2 is a single-node
version of ramster.
+
+config RAMSTER
+ bool "Cross-machine RAM capacity sharing, aka peer-to-peer tmem"
+ depends on CONFIGFS_FS=y && SYSFS=y && !HIGHMEM && ZCACHE2=y
+ # must ensure struct page is 8-byte aligned
+ select HAVE_ALIGNED_STRUCT_PAGE if !64_BIT
+ default n
+ help
+ 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
+ zcache2, compresses swap pages into local RAM, but then remotifies
+ the compressed pages to another node in the RAMster cluster.