view Documentation/basic_profiling.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 These instructions are deliberately very basic. If you want something clever,
2 go read the real docs ;-) Please don't add more stuff, but feel free to
3 correct my mistakes ;-) (mbligh@aracnet.com)
4 Thanks to John Levon, Dave Hansen, et al. for help writing this.
6 <test> is the thing you're trying to measure.
7 Make sure you have the correct System.map / vmlinux referenced!
9 It is probably easiest to use "make install" for linux and hack
10 /sbin/installkernel to copy vmlinux to /boot, in addition to vmlinuz,
11 config, System.map, which are usually installed by default.
13 Readprofile
14 -----------
15 A recent readprofile command is needed for 2.6, such as found in util-linux
16 2.12a, which can be downloaded from:
18 http://www.kernel.org/pub/linux/utils/util-linux/
20 Most distributions will ship it already.
22 Add "profile=2" to the kernel command line.
24 clear readprofile -r
25 <test>
26 dump output readprofile -m /boot/System.map > captured_profile
28 Oprofile
29 --------
31 Get the source (see Changes for required version) from
32 http://oprofile.sourceforge.net/ and add "idle=poll" to the kernel command
33 line.
35 Configure with CONFIG_PROFILING=y and CONFIG_OPROFILE=y & reboot on new kernel
37 ./configure --with-kernel-support
38 make install
40 For superior results, be sure to enable the local APIC. If opreport sees
41 a 0Hz CPU, APIC was not on. Be aware that idle=poll may mean a performance
42 penalty.
44 One time setup:
45 opcontrol --setup --vmlinux=/boot/vmlinux
47 clear opcontrol --reset
48 start opcontrol --start
49 <test>
50 stop opcontrol --stop
51 dump output opreport > output_file
53 To only report on the kernel, run opreport -l /boot/vmlinux > output_file
55 A reset is needed to clear old statistics, which survive a reboot.