[PATCH 4/4] kexec-tools: Add cgroup_disable=memory to crash kernel parameters

Simon Horman horms at verge.net.au
Sun May 26 09:20:21 EDT 2013


On Wed, May 22, 2013 at 10:57:36AM +0200, Thomas Renninger wrote:
> cgroup memory subsystem pre-allocates quite some memory at boot up.
> Example dmesg:
> allocated 469762048 bytes of page_cgroup
> please try 'cgroup_disable=memory' option if you don't want memory cgroups
> 
> Due to maxcpu=1 it is by far not that much than in a productive kernel.
> It still seem to be around 4M statically as no Numa overhead exists with
> only one active CPU. It is still worth to disable cgroup memory
> pre-allocating in crash kernel environment.
> 
> Signed-off-by: Thomas Renninger <trenn at suse.de>
> Signed-off-by: Thomas Renninger <Thomas Renninger" trenn at suse.de>

I'm not really sure this kind of logic should be hard-coded into
kexec-tools. --append should allow callers of kexec to add this
option if it is appropriate.

> ---
>  kexec/arch/i386/crashdump-x86.c |   22 ++++++++++++++++++++++
>  1 files changed, 22 insertions(+), 0 deletions(-)
> 
> diff --git a/kexec/arch/i386/crashdump-x86.c b/kexec/arch/i386/crashdump-x86.c
> index 7fd1c5b..e6d60a9 100644
> --- a/kexec/arch/i386/crashdump-x86.c
> +++ b/kexec/arch/i386/crashdump-x86.c
> @@ -757,6 +757,23 @@ static int cmdline_add_elfcorehdr(char *cmdline, unsigned long addr)
>  	return 0;
>  }
>  
> +static void cmdline_disable_cgroup(char *cmdline)
> +{
> +	int cmdlen;
> +	char str[30] = " cgroup_disable=memory";
> +
> +	cmdlen = strlen(cmdline) + strlen(str);
> +	if (cmdlen > (COMMAND_LINE_SIZE - 1)) {
> +		/* Not fatal if cgroup memory is not disabled */
> +		dbgprintf(
> +		  "Command line overflow, cgroup memory not disabled\n");
> +		return;
> +	}
> +	strcat(cmdline, str);
> +
> +	dbgprintf("Command line after adding adding cgroup_disable=memory\n");
> +	dbgprintf("%s\n", cmdline);
> +}
>  
>  /*
>   * This routine is specific to i386 architecture to maintain the
> @@ -1037,6 +1054,11 @@ int load_crashdump_segments(struct kexec_info *info, char* mod_cmdline,
>  		end = mem_range[i].end;
>  		cmdline_add_memmap_acpi(mod_cmdline, start, end);
>  	}
> +	/* 
> +	 * Always add disabling cgroup_diable=memory param at the end,
> +	 * it's not critical if it falls off
> +	 */
> +	cmdline_disable_cgroup(mod_cmdline);
>  	return 0;
>  }
>  
> -- 
> 1.7.6.1
> 
> 
> _______________________________________________
> kexec mailing list
> kexec at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/kexec
> 



More information about the kexec mailing list