ia64/linux-2.6.18-xen.hg

view scripts/Makefile.headersinst @ 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 831230e53067
children
line source
1 # ==========================================================================
2 # Installing headers
3 #
4 # header-y files will be installed verbatim
5 # unifdef-y are the files where unifdef will be run before installing files
6 # objhdr-y are generated files that will be installed verbatim
7 #
8 # ==========================================================================
10 UNIFDEF := unifdef -U__KERNEL__
12 # Eliminate the contents of (and inclusions of) compiler.h
13 HDRSED := sed -e "s/ inline / __inline__ /g" \
14 -e "s/[[:space:]]__user[[:space:]]\+/ /g" \
15 -e "s/(__user[[:space:]]\+/ (/g" \
16 -e "s/[[:space:]]__force[[:space:]]\+/ /g" \
17 -e "s/(__force[[:space:]]\+/ (/g" \
18 -e "s/[[:space:]]__iomem[[:space:]]\+/ /g" \
19 -e "s/(__iomem[[:space:]]\+/ (/g" \
20 -e "s/[[:space:]]__attribute_const__[[:space:]]\+/\ /g" \
21 -e "s/[[:space:]]__attribute_const__$$//" \
22 -e "/^\#include <linux\/compiler.h>/d"
24 _dst := $(if $(dst),$(dst),$(obj))
26 .PHONY: __headersinst
27 __headersinst:
30 ifeq (,$(patsubst include/asm/%,,$(obj)/))
31 # For producing the generated stuff in include/asm for biarch builds, include
32 # both sets of Kbuild files; we'll generate anything which is mentioned in
33 # _either_ arch, and recurse into subdirectories which are mentioned in either
34 # arch. Since some directories may exist in one but not the other, we must
35 # use '-include'.
36 GENASM := 1
37 archasm := $(subst include/asm,asm-$(ARCH),$(obj))
38 altarchasm := $(subst include/asm,asm-$(ALTARCH),$(obj))
39 -include $(srctree)/include/$(archasm)/Kbuild
40 -include $(srctree)/include/$(altarchasm)/Kbuild
41 else
42 include $(srctree)/$(obj)/Kbuild
43 endif
45 include scripts/Kbuild.include
47 # If this is include/asm-$(ARCH) and there's no $(ALTARCH), then
48 # override $(_dst) so that we install to include/asm directly.
49 ifeq ($(obj)$(ALTARCH),include/asm-$(ARCH))
50 _dst := include/asm
51 endif
53 header-y := $(sort $(header-y))
54 unifdef-y := $(sort $(unifdef-y))
55 subdir-y := $(patsubst %/,%,$(filter %/, $(header-y)))
56 header-y := $(filter-out %/, $(header-y))
57 header-y := $(filter-out $(unifdef-y),$(header-y))
59 ifdef ALTARCH
60 ifeq ($(obj),include/asm-$(ARCH))
61 altarch-y := altarch-dir
62 endif
63 endif
65 # Make the definitions visible for recursive make invocations
66 export ALTARCH
67 export ARCHDEF
68 export ALTARCHDEF
70 quiet_cmd_o_hdr_install = INSTALL $(_dst)/$@
71 cmd_o_hdr_install = cp $(objtree)/$(obj)/$@ $(INSTALL_HDR_PATH)/$(_dst)
73 quiet_cmd_headers_install = INSTALL $(_dst)/$@
74 cmd_headers_install = $(HDRSED) $(srctree)/$(obj)/$@ \
75 > $(INSTALL_HDR_PATH)/$(_dst)/$@
77 quiet_cmd_unifdef = UNIFDEF $(_dst)/$@
78 cmd_unifdef = $(UNIFDEF) $(srctree)/$(obj)/$@ | $(HDRSED) \
79 > $(INSTALL_HDR_PATH)/$(_dst)/$@ || :
81 quiet_cmd_check = CHECK $(_dst)/$@
82 cmd_check = $(srctree)/scripts/hdrcheck.sh \
83 $(INSTALL_HDR_PATH)/include \
84 $(INSTALL_HDR_PATH)/$(_dst)/$@
86 quiet_cmd_mkdir = MKDIR $@
87 cmd_mkdir = mkdir -p $(INSTALL_HDR_PATH)/$@
89 quiet_cmd_gen = GEN $(_dst)/$@
90 cmd_gen = \
91 STUBDEF=__ASM_STUB_`echo $@ | tr a-z. A-Z_`; \
92 (echo "/* File autogenerated by 'make headers_install' */" ; \
93 echo "\#ifndef $$STUBDEF" ; \
94 echo "\#define $$STUBDEF" ; \
95 echo "\# if $(ARCHDEF)" ; \
96 if [ -r $(INSTALL_HDR_PATH)/include/$(archasm)/$@ ]; then \
97 echo "\# include <$(archasm)/$@>" ; \
98 else \
99 echo "\# error $(archasm)/$@ does not exist in" \
100 "the $(ARCH) architecture" ; \
101 fi ; \
102 echo "\# elif $(ALTARCHDEF)" ; \
103 if [ -r $(INSTALL_HDR_PATH)/include/$(altarchasm)/$@ ]; then \
104 echo "\# include <$(altarchasm)/$@>" ; \
105 else \
106 echo "\# error $(altarchasm)/$@ does not exist in" \
107 "the $(ALTARCH) architecture" ; \
108 fi ; \
109 echo "\# else" ; \
110 echo "\# warning This machine appears to be" \
111 "neither $(ARCH) nor $(ALTARCH)." ; \
112 echo "\# endif" ; \
113 echo "\#endif /* $$STUBDEF */" ; \
114 ) > $(INSTALL_HDR_PATH)/$(_dst)/$@
116 __headersinst: $(subdir-y) $(header-y) $(unifdef-y) $(altarch-y) $(objhdr-y)
118 .PHONY: $(header-y) $(unifdef-y) $(subdir-y)
120 ifdef HDRCHECK
121 # Rules for checking headers
122 $(objhdr-y) $(header-y) $(unifdef-y):
123 $(call cmd,check)
124 else
125 # Rules for installing headers
127 $(objhdr-y) $(subdir-y) $(header-y) $(unifdef-y): $(_dst)
129 .PHONY: $(_dst)
130 $(_dst):
131 $(call cmd,mkdir)
133 ifdef GENASM
134 $(objhdr-y) $(header-y) $(unifdef-y):
135 $(call cmd,gen)
137 else
138 $(objhdr-y):
139 $(call cmd,o_hdr_install)
141 $(header-y):
142 $(call cmd,headers_install)
144 $(unifdef-y):
145 $(call cmd,unifdef)
146 endif
147 endif
149 hdrinst := -rR -f $(srctree)/scripts/Makefile.headersinst obj
151 .PHONY: altarch-dir
152 # All the files in the normal arch dir must be created first, since we test
153 # for their existence.
154 altarch-dir: $(subdir-y) $(header-y) $(unifdef-y) $(objhdr-y)
155 $(Q)$(MAKE) $(hdrinst)=include/asm-$(ALTARCH) dst=include/asm-$(ALTARCH)
156 $(Q)$(MAKE) $(hdrinst)=include/asm dst=include/asm
158 # Recursion
159 $(subdir-y):
160 $(Q)$(MAKE) $(hdrinst)=$(obj)/$@ dst=$(_dst)/$@ rel=../$(rel)