Olaf Hering
ee2be8156e
This change reverses the task of xenpaging. Before this change a fixed number of pages was paged out. With this change the guest will not have access to more than the given number of pages at the same time. The xenpaging= config option is replaced by actmem= A new xm mem-swap-target is added. The xenpaging binary is moved to /usr/lib/xen/bin/ xenpaging.HVMCOPY_gfn_paged_out.patch xenpaging.XEN_PAGING_DIR.patch xenpaging.add_evict_pages.patch xenpaging.bitmap_clear.patch xenpaging.cmdline-interface.patch xenpaging.encapsulate_domain_info.patch xenpaging.file_op-return-code.patch xenpaging.guest-memusage.patch xenpaging.install-to-libexec.patch xenpaging.low_target_policy_nomru.patch xenpaging.main-loop-exit-handling.patch xenpaging.misleading-comment.patch xenpaging.page_in-munmap-size.patch xenpaging.print-gfn.patch xenpaging.record-numer-paged-out-pages.patch xenpaging.reset-uncomsumed.patch xenpaging.stale-comments.patch xenpaging.target-tot_pages.patch xenpaging.use-PERROR.patch xenpaging.watch-target-tot_pages.patch xenpaging.watch_event-DPRINTF.patch xenpaging.xc_interface_open-comment.patch - xen.spec: update filelist package /usr/lib*/xen with wildcard to pickup new files remove duplicate /usr/sbin/xen-list from filelist OBS-URL: https://build.opensuse.org/package/show/Virtualization/xen?expand=0&rev=157
51 lines
1.7 KiB
Diff
51 lines
1.7 KiB
Diff
# HG changeset patch
|
|
# Parent 5d87917314c0b4f13c987575d5329dfa215c5698
|
|
xenpaging: retry unpageable gfns
|
|
|
|
Nomination of gfns can fail, but may succeed later.
|
|
Thats the case for a guest that starts ballooned.
|
|
|
|
v2:
|
|
- print debug when clearing uncosumed happens
|
|
|
|
Signed-off-by: Olaf Hering <olaf@aepfle.de>
|
|
|
|
---
|
|
tools/xenpaging/policy_default.c | 14 ++++++++++++++
|
|
1 file changed, 14 insertions(+)
|
|
|
|
Index: xen-4.1.2-testing/tools/xenpaging/policy_default.c
|
|
===================================================================
|
|
--- xen-4.1.2-testing.orig/tools/xenpaging/policy_default.c
|
|
+++ xen-4.1.2-testing/tools/xenpaging/policy_default.c
|
|
@@ -32,6 +32,7 @@ static unsigned int i_mru;
|
|
static unsigned int mru_size;
|
|
static unsigned long *bitmap;
|
|
static unsigned long *unconsumed;
|
|
+static unsigned int unconsumed_cleared;
|
|
static unsigned long current_gfn;
|
|
static unsigned long max_pages;
|
|
|
|
@@ -87,8 +88,21 @@ int policy_choose_victim(xenpaging_t *pa
|
|
current_gfn++;
|
|
if ( current_gfn >= max_pages )
|
|
current_gfn = 0;
|
|
+ /* Could not nominate any gfn */
|
|
if ( wrap == current_gfn )
|
|
{
|
|
+ /* Count wrap arounds */
|
|
+ unconsumed_cleared++;
|
|
+ /* Force retry every few seconds (depends on poll() timeout) */
|
|
+ if ( unconsumed_cleared > 123)
|
|
+ {
|
|
+ /* Force retry of unconsumed gfns */
|
|
+ bitmap_clear(unconsumed, max_pages);
|
|
+ unconsumed_cleared = 0;
|
|
+ DPRINTF("clearing unconsumed, wrap %lx", wrap);
|
|
+ /* One more round before returning ENOSPC */
|
|
+ continue;
|
|
+ }
|
|
victim->gfn = INVALID_MFN;
|
|
return -ENOSPC;
|
|
}
|