[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Xen-devel] [PATCH] xl: extend autoballoon xl.conf option with an "auto" option
From: David Vrabel <david.vrabel@xxxxxxxxxx> autoballoon=1 is not recommened if dom0_mem was used to reduce the amount of dom0 memory. Instead of requiring users to change xl.conf if they do this, extend the autoballoon option with a new choice: "auto". With autoballoon="auto", autoballooning will be disabled if dom0_mem was used on the Xen command line. For consistency, accept "on" and "off" as valid autoballoon options (1 and 0 are still accepted). The default remains "on" so it is recommended that packagers provide an xl.cong with autoballoon="auto". Signed-off-by: David Vrabel <david.vrabel@xxxxxxxxxx> --- docs/man/xl.conf.pod.5 | 21 ++++++++++++++------- tools/examples/xl.conf | 2 +- tools/libxl/xl.c | 31 +++++++++++++++++++++++++++++-- 3 files changed, 44 insertions(+), 10 deletions(-) diff --git a/docs/man/xl.conf.pod.5 b/docs/man/xl.conf.pod.5 index 82c6b20..959f494 100644 --- a/docs/man/xl.conf.pod.5 +++ b/docs/man/xl.conf.pod.5 @@ -45,15 +45,22 @@ The semantics of each C<KEY> defines which form of C<VALUE> is required. =over 4 -=item B<autoballoon=BOOLEAN> +=item B<autoballoon="off"|"on"|"auto"> -If disabled then C<xl> will not attempt to reduce the amount of memory -assigned to domain 0 in order to create free memory when starting a -new domain. You are strongly recommended to set this to C<0> -(C<False>) if you use the C<dom0_mem> hypervisor command line to -reduce the amount of memory given to domain 0 by default. +If set to "on" then C<xl> will automatically reduce the amount of +memory assigned to domain 0 in order to free memory for new domains. -Default: C<1> +If set to "off" then C<xl> will not automatically reduce the amount of +domain 0 memory. + +If set to "auto" then auto-ballooning will be disabled if the +C<dom0_mem> option was provided on the Xen command line. + +You are strongly recommended to set this to C<"off"> (or C<"auto">) if +you use the C<dom0_mem> hypervisor command line to reduce the amount +of memory given to domain 0 by default. + +Default: C<"on"> =item B<run_hotplug_scripts=BOOLEAN> diff --git a/tools/examples/xl.conf b/tools/examples/xl.conf index 28ab796..b3db5db 100644 --- a/tools/examples/xl.conf +++ b/tools/examples/xl.conf @@ -2,7 +2,7 @@ # automatically balloon down dom0 when xen doesn't have enough free # memory to create a domain -#autoballoon=1 +#autoballoon="auto" # full path of the lockfile used by xl during domain creation #lockfile="/var/lock/xl" diff --git a/tools/libxl/xl.c b/tools/libxl/xl.c index ecbcd3b..bddb7be 100644 --- a/tools/libxl/xl.c +++ b/tools/libxl/xl.c @@ -47,6 +47,24 @@ enum output_format default_output_format = OUTPUT_FORMAT_JSON; static xentoollog_level minmsglevel = XTL_PROGRESS; +/* Default autoballoon value based on presence of dom0_mem Xen command + line option. */ +static int auto_autoballoon(void) +{ + const libxl_version_info *info; + + info = libxl_get_version_info(ctx); + if (!info) { + fprintf(stderr, "libxl_get_version_info failed.\n"); + return 1; /* default to autoballooning */ + } + + if (strstr(info->commandline, "dom0_mem")) + return 0; + + return 1; +} + static void parse_global_config(const char *configfile, const char *configfile_data, int configfile_len) @@ -68,8 +86,17 @@ static void parse_global_config(const char *configfile, exit(1); } - if (!xlu_cfg_get_long (config, "autoballoon", &l, 0)) - autoballoon = l; + if (!xlu_cfg_get_string(config, "autoballoon", &buf, 0)) { + printf("opt\n"); + if (!strcmp(buf, "on") || !strcmp(buf, "1")) + autoballoon = 1; + else if (!strcmp(buf, "off") || !strcmp(buf, "0")) + autoballoon = 0; + else if (!strcmp(buf, "auto")) + autoballoon = auto_autoballoon(); + else + fprintf(stderr, "invalid autoballoon option"); + } if (!xlu_cfg_get_long (config, "run_hotplug_scripts", &l, 0)) run_hotplug_scripts = l; -- 1.7.2.5 _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |