mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-29 19:21:31 -04:00
xen: tmem: self-ballooning and frontswap-selfshrinking
This patch introduces two in-kernel drivers for Xen transcendent memory
("tmem") functionality that complement cleancache and frontswap. Both
use control theory to dynamically adjust and optimize memory utilization.
Selfballooning controls the in-kernel Xen balloon driver, targeting a goal
value (vm_committed_as), thus pushing less frequently used clean
page cache pages (through the cleancache code) into Xen tmem where
Xen can balance needs across all VMs residing on the physical machine.
Frontswap-selfshrinking controls the number of pages in frontswap,
driving it towards zero (effectively doing a partial swapoff) when
in-kernel memory pressure subsides, freeing up RAM for other VMs.
More detail is provided in the header comment of xen-selfballooning.c.
Signed-off-by: Dan Magenheimer <[email protected]>
[v8: [email protected]: set default enablement depending on frontswap]
[v7: [email protected]: fix capitalization and punctuation in comments]
[v6: fix frontswap-selfshrinking initialization]
[v6: [email protected]: fix init pr_infos; add comments about swap]
[v5: [email protected]: add NULL to attr list; move inits up to decls]
[v4: [email protected]: use strict_strtoul plus a few syntactic nits]
[v3: [email protected]: fix potential divides-by-zero]
[v3: [email protected]: add many more comments, fix nits]
[v2: rebased to linux-3.0-rc1]
[v2: [email protected]: reorganize as new file (xen-selfballoon.c)]
[v2: [email protected]: proper access to vm_committed_as]
[v2: [email protected]: accounting fixes]
Cc: Jan Beulich <[email protected]>
Cc: Jeremy Fitzhardinge <[email protected]>
Cc: <[email protected]>
This commit is contained in:
parent
55922c9d1b
commit
a50777c791
6 changed files with 520 additions and 0 deletions
|
|
@ -23,3 +23,13 @@ void balloon_set_new_target(unsigned long target);
|
|||
|
||||
int alloc_xenballooned_pages(int nr_pages, struct page** pages);
|
||||
void free_xenballooned_pages(int nr_pages, struct page** pages);
|
||||
|
||||
struct sys_device;
|
||||
#ifdef CONFIG_XEN_SELFBALLOONING
|
||||
extern int register_xen_selfballooning(struct sys_device *sysdev);
|
||||
#else
|
||||
static inline int register_xen_selfballooning(struct sys_device *sysdev)
|
||||
{
|
||||
return -ENOSYS;
|
||||
}
|
||||
#endif
|
||||
|
|
|
|||
5
include/xen/tmem.h
Normal file
5
include/xen/tmem.h
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
#ifndef _XEN_TMEM_H
|
||||
#define _XEN_TMEM_H
|
||||
/* defined in drivers/xen/tmem.c */
|
||||
extern int tmem_enabled;
|
||||
#endif /* _XEN_TMEM_H */
|
||||
Loading…
Reference in a new issue