svn commit: r246204 - head/sys/arm/include

Alan Cox alc at rice.edu
Fri Feb 1 17:52:14 UTC 2013


On 02/01/2013 04:26, Andre Oppermann wrote:
> Author: andre
> Date: Fri Feb  1 10:26:31 2013
> New Revision: 246204
> URL: http://svnweb.freebsd.org/changeset/base/246204
>
> Log:
>   Add VM_KMEM_SIZE_SCALE parameter set to 2 (50%) for all ARM platforms.
>   
>   VM_KMEM_SIZE_SCALE specifies which fraction of the available physical
>   memory, after deduction of the kernel itself and other early statically
>   allocated memory, can be used for the kmem_map.  The kmem_map provides
>   for all UMA/malloc allocations in KVM space.
>   

Not always.  Off the top of my head, two things immediately come to
mind: 9KB and 16KB jumbo frames come from the kernel map, because we
allocate physically contiguous memory for them, and some swap metadata
also comes from the kernel map.

Yes, all "ordinary" heap allocations come from the kmem map, but a
number of things that are special for one reason or another don't.

>   Previously ARM was using a fixed kmem_map size of (12*1024*1024) = 12MB
>   without regard to effectively available memory.  This is too small for
>   recent ARM SoC with more than 128MB of RAM.
>   
>   For reference a description of others related kmem_map parameters:
>   
>    VM_KMEM_SIZE		default start size of kmem_map if SCALE is
>   			not defined
>    VM_KMEM_SIZE_MIN	hard floor on the kmem_map size
>    VM_KMEM_SIZE_MAX	hard ceiling on the kmem_map size
>    VM_KMEM_SIZE_SCALE	fraction of the available real memory to
>   			be used for the kmem_map, limited by the
>   			MIN and MAX parameters.
>   
>   Tested by:	ian
>   MFC after:	1 week
>
> Modified:
>   head/sys/arm/include/vmparam.h
>
> Modified: head/sys/arm/include/vmparam.h
> ==============================================================================
> --- head/sys/arm/include/vmparam.h	Fri Feb  1 10:00:21 2013	(r246203)
> +++ head/sys/arm/include/vmparam.h	Fri Feb  1 10:26:31 2013	(r246204)
> @@ -134,12 +134,15 @@
>  #endif
>  
>  #define VM_MAX_KERNEL_ADDRESS	0xffffffff
> +
>  /*
>   * Virtual size (bytes) for various kernel submaps.
>   */
> -
>  #ifndef VM_KMEM_SIZE
> -#define VM_KMEM_SIZE            (12*1024*1024)
> +#define VM_KMEM_SIZE		(12*1024*1024)
> +#endif
> +#ifndef VM_KMEM_SIZE_SCALE
> +#define VM_KMEM_SIZE_SCALE	(2)
>  #endif
>  
>  #define MAXTSIZ 	(16*1024*1024)
>



More information about the svn-src-all mailing list