view Documentation/memory.txt @ 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
line source
1 There are several classic problems related to memory on Linux
2 systems.
4 1) There are some buggy motherboards which cannot properly
5 deal with the memory above 16MB. Consider exchanging
6 your motherboard.
8 2) You cannot do DMA on the ISA bus to addresses above
9 16M. Most device drivers under Linux allow the use
10 of bounce buffers which work around this problem. Drivers
11 that don't use bounce buffers will be unstable with
12 more than 16M installed. Drivers that use bounce buffers
13 will be OK, but may have slightly higher overhead.
15 3) There are some motherboards that will not cache above
16 a certain quantity of memory. If you have one of these
17 motherboards, your system will be SLOWER, not faster
18 as you add more memory. Consider exchanging your
19 motherboard.
21 All of these problems can be addressed with the "mem=XXXM" boot option
22 (where XXX is the size of RAM to use in megabytes).
23 It can also tell Linux to use less memory than is actually installed.
24 If you use "mem=" on a machine with PCI, consider using "memmap=" to avoid
25 physical address space collisions.
27 See the documentation of your boot loader (LILO, loadlin, etc.) about
28 how to pass options to the kernel.
30 There are other memory problems which Linux cannot deal with. Random
31 corruption of memory is usually a sign of serious hardware trouble.
32 Try:
34 * Reducing memory settings in the BIOS to the most conservative
35 timings.
37 * Adding a cooling fan.
39 * Not overclocking your CPU.
41 * Having the memory tested in a memory tester or exchanged
42 with the vendor. Consider testing it with memtest86 yourself.
44 * Exchanging your CPU, cache, or motherboard for one that works.
46 * Disabling the cache from the BIOS.
48 * Try passing the "mem=4M" option to the kernel to limit
49 Linux to using a very small amount of memory. Use "memmap="-option
50 together with "mem=" on systems with PCI to avoid physical address
51 space collisions.
54 Other tricks:
56 * Try passing the "no-387" option to the kernel to ignore
57 a buggy FPU.
59 * Try passing the "no-hlt" option to disable the potentially
60 buggy HLT instruction in your CPU.