ia64/linux-2.6.18-xen.hg

view Documentation/dontdiff @ 897:329ea0ccb344

balloon: try harder to balloon up under memory pressure.

Currently if the balloon driver is unable to increase the guest's
reservation it assumes the failure was due to reaching its full
allocation, gives up on the ballooning operation and records the limit
it reached as the "hard limit". The driver will not try again until
the target is set again (even to the same value).

However it is possible that ballooning has in fact failed due to
memory pressure in the host and therefore it is desirable to keep
attempting to reach the target in case memory becomes available. The
most likely scenario is that some guests are ballooning down while
others are ballooning up and therefore there is temporary memory
pressure while things stabilise. You would not expect a well behaved
toolstack to ask a domain to balloon to more than its allocation nor
would you expect it to deliberately over-commit memory by setting
balloon targets which exceed the total host memory.

This patch drops the concept of a hard limit and causes the balloon
driver to retry increasing the reservation on a timer in the same
manner as when decreasing the reservation.

Also if we partially succeed in increasing the reservation
(i.e. receive less pages than we asked for) then we may as well keep
those pages rather than returning them to Xen.

Signed-off-by: Ian Campbell <ian.campbell@citrix.com>
author Keir Fraser <keir.fraser@citrix.com>
date Fri Jun 05 14:01:20 2009 +0100 (2009-06-05)
parents 3e8752eb6d9c
children
line source
1 *.a
2 *.aux
3 *.bin
4 *.cpio
5 *.css
6 *.dvi
7 *.eps
8 *.gif
9 *.grep
10 *.grp
11 *.gz
12 *.html
13 *.jpeg
14 *.ko
15 *.log
16 *.lst
17 *.mod.c
18 *.o
19 *.orig
20 *.out
21 *.pdf
22 *.png
23 *.ps
24 *.rej
25 *.s
26 *.sgml
27 *.so
28 *.tex
29 *.ver
30 *.xml
31 *_MODULES
32 *_vga16.c
33 *cscope*
34 *~
35 .*
36 .cscope
37 53c700_d.h
38 53c8xx_d.h*
39 BitKeeper
40 COPYING
41 CREDITS
42 CVS
43 ChangeSet
44 Image
45 Kerntypes
46 MODS.txt
47 Module.symvers
48 PENDING
49 SCCS
50 System.map*
51 TAGS
52 aic7*reg.h*
53 aic7*reg_print.c*
54 aic7*seq.h*
55 aicasm
56 aicdb.h*
57 asm
58 asm-offsets.*
59 asm_offsets.*
60 autoconf.h*
61 bbootsect
62 bin2c
63 binkernel.spec
64 bootsect
65 bsetup
66 btfixupprep
67 build
68 bvmlinux
69 bzImage*
70 classlist.h*
71 comp*.log
72 compile.h*
73 config
74 config-*
75 config_data.h*
76 conmakehash
77 consolemap_deftbl.c*
78 crc32table.h*
79 cscope.*
80 defkeymap.c*
81 devlist.h*
82 docproc
83 dummy_sym.c*
84 elfconfig.h*
85 filelist
86 fixdep
87 fore200e_mkfirm
88 fore200e_pca_fw.c*
89 gen-devlist
90 gen-kdb_cmds.c*
91 gen_crc32table
92 gen_init_cpio
93 genksyms
94 gentbl
95 ikconfig.h*
96 initramfs_list
97 kallsyms
98 kconfig
99 kconfig.tk
100 keywords.c*
101 ksym.c*
102 ksym.h*
103 lex.c*
104 logo_*.c
105 logo_*_clut224.c
106 logo_*_mono.c
107 lxdialog
108 mach-types
109 mach-types.h
110 make_times_h
111 map
112 maui_boot.h
113 mk_elfconfig
114 mkdep
115 mktables
116 modpost
117 modversions.h*
118 offset.h
119 offsets.h
120 oui.c*
121 parse.c*
122 parse.h*
123 pnmtologo
124 ppc_defs.h*
125 promcon_tbl.c*
126 pss_boot.h
127 raid6altivec*.c
128 raid6int*.c
129 raid6tables.c
130 setup
131 sim710_d.h*
132 sm_tbl*
133 split-include
134 tags
135 times.h*
136 tkparse
137 trix_boot.h
138 utsrelease.h*
139 version.h*
140 vmlinux
141 vmlinux-*
142 vmlinux.lds
143 vsyscall.lds
144 wanxlfw.inc
145 uImage
146 zImage