improve sizing of kmem_arena now that more allocations are made from it
don't enforce limits if not required ok: riz@
This commit is contained in:
parent
6c28a43a78
commit
5f319369a0
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: param.h,v 1.16 2012/01/24 20:03:36 christos Exp $ */
|
||||
/* $NetBSD: param.h,v 1.17 2012/02/04 17:56:16 para Exp $ */
|
||||
|
||||
#ifdef __x86_64__
|
||||
|
||||
|
@ -81,11 +81,12 @@
|
|||
#endif
|
||||
|
||||
/*
|
||||
* Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized
|
||||
* Minimum size of the kernel kmem_arena in PAGE_SIZE-sized
|
||||
* logical pages.
|
||||
* No enforced maximum on amd64.
|
||||
*/
|
||||
#define NKMEMPAGES_MIN_DEFAULT ((8 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
#define NKMEMPAGES_MAX_DEFAULT ((1 *1024 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
#define NKMEMPAGES_MAX_UNLIMITED 1
|
||||
|
||||
/*
|
||||
* XXXfvdl the PD* stuff is different from i386.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: param.h,v 1.16 2011/01/14 02:06:24 rmind Exp $ */
|
||||
/* $NetBSD: param.h,v 1.17 2012/02/04 17:56:16 para Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994,1995 Mark Brinicombe.
|
||||
|
@ -64,8 +64,8 @@
|
|||
* Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized
|
||||
* logical pages.
|
||||
*/
|
||||
#define NKMEMPAGES_MIN_DEFAULT ((6 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
#define NKMEMPAGES_MAX_DEFAULT ((7 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
#define NKMEMPAGES_MIN_DEFAULT ((8 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
#define NKMEMPAGES_MAX_DEFAULT ((128 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
|
||||
/* Constants used to divide the USPACE area */
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: param.h,v 1.17 2012/01/24 20:03:36 christos Exp $ */
|
||||
/* $NetBSD: param.h,v 1.18 2012/02/04 17:56:16 para Exp $ */
|
||||
|
||||
/* $OpenBSD: param.h,v 1.12 2001/07/06 02:07:41 provos Exp $ */
|
||||
|
||||
|
@ -83,7 +83,7 @@
|
|||
* Size of kernel malloc arena in logical pages
|
||||
*/
|
||||
#define NKMEMPAGES_MIN_DEFAULT ((16 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
#define NKMEMPAGES_MAX_DEFAULT ((16 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
#define NKMEMPAGES_MAX_DEFAULT ((128 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
|
||||
/*
|
||||
* Mach derived conversion macros
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: param.h,v 1.74 2012/01/24 20:03:37 christos Exp $ */
|
||||
/* $NetBSD: param.h,v 1.75 2012/02/04 17:56:16 para Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1990 The Regents of the University of California.
|
||||
|
@ -129,7 +129,7 @@
|
|||
* logical pages.
|
||||
*/
|
||||
#define NKMEMPAGES_MIN_DEFAULT ((8 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
#define NKMEMPAGES_MAX_DEFAULT ((128 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
#define NKMEMPAGES_MAX_DEFAULT ((280 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
|
||||
/*
|
||||
* Mach derived conversion macros
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: param.h,v 1.47 2012/01/24 20:03:38 christos Exp $ */
|
||||
/* $NetBSD: param.h,v 1.48 2012/02/04 17:56:16 para Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1992, 1993
|
||||
|
@ -193,11 +193,12 @@ extern int nbpg, pgofset, pgshift;
|
|||
#define MSGBUFSIZE NBPG
|
||||
|
||||
/*
|
||||
* Minimum and maximum sizes of the kernel malloc arena in PAGE_SIZE-sized
|
||||
* Minimum size of the kernel kmem_arena in PAGE_SIZE-sized
|
||||
* logical pages.
|
||||
* No enforced maximum on sparc64.
|
||||
*/
|
||||
#define NKMEMPAGES_MIN_DEFAULT ((6 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
#define NKMEMPAGES_MAX_DEFAULT ((128 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
#define NKMEMPAGES_MIN_DEFAULT ((64 * 1024 * 1024) >> PAGE_SHIFT)
|
||||
#define NKMEMPAGES_MAX_UNLIMITED 1
|
||||
|
||||
#ifdef _KERNEL
|
||||
#ifndef _LOCORE
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: uvm_km.c,v 1.118 2012/02/03 19:25:07 matt Exp $ */
|
||||
/* $NetBSD: uvm_km.c,v 1.119 2012/02/04 17:56:17 para Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1997 Charles D. Cranor and Washington University.
|
||||
|
@ -120,7 +120,7 @@
|
|||
*/
|
||||
|
||||
#include <sys/cdefs.h>
|
||||
__KERNEL_RCSID(0, "$NetBSD: uvm_km.c,v 1.118 2012/02/03 19:25:07 matt Exp $");
|
||||
__KERNEL_RCSID(0, "$NetBSD: uvm_km.c,v 1.119 2012/02/04 17:56:17 para Exp $");
|
||||
|
||||
#include "opt_uvmhist.h"
|
||||
|
||||
|
@ -189,10 +189,16 @@ kmeminit_nkmempages(void)
|
|||
return;
|
||||
}
|
||||
|
||||
npages = physmem;
|
||||
#if defined(PMAP_MAP_POOLPAGE)
|
||||
npages = (physmem / 4);
|
||||
#else
|
||||
npages = (physmem / 3) * 2;
|
||||
#endif /* defined(PMAP_MAP_POOLPAGE) */
|
||||
|
||||
#ifndef NKMEMPAGES_MAX_UNLIMITED
|
||||
if (npages > NKMEMPAGES_MAX)
|
||||
npages = NKMEMPAGES_MAX;
|
||||
#endif
|
||||
|
||||
if (npages < NKMEMPAGES_MIN)
|
||||
npages = NKMEMPAGES_MIN;
|
||||
|
@ -212,6 +218,7 @@ kmeminit_nkmempages(void)
|
|||
void
|
||||
uvm_km_bootstrap(vaddr_t start, vaddr_t end)
|
||||
{
|
||||
bool kmem_arena_small;
|
||||
vaddr_t base = VM_MIN_KERNEL_ADDRESS;
|
||||
struct uvm_map_args args;
|
||||
int error;
|
||||
|
@ -221,11 +228,8 @@ uvm_km_bootstrap(vaddr_t start, vaddr_t end)
|
|||
start, end, 0,0);
|
||||
|
||||
kmeminit_nkmempages();
|
||||
kmemsize = nkmempages * PAGE_SIZE;
|
||||
|
||||
/* kmemsize = MIN((((vsize_t)(end - start)) / 3),
|
||||
((((vsize_t)uvmexp.npages) * PAGE_SIZE) / 2));
|
||||
kmemsize = round_page(kmemsize); */
|
||||
kmemsize = (vsize_t)nkmempages * PAGE_SIZE;
|
||||
kmem_arena_small = kmemsize < 64 * 1024 * 1024;
|
||||
|
||||
UVMHIST_LOG(maphist, "kmemsize=%#"PRIxVSIZE, kmemsize, 0,0,0);
|
||||
|
||||
|
@ -301,7 +305,8 @@ uvm_km_bootstrap(vaddr_t start, vaddr_t end)
|
|||
|
||||
kmem_va_arena = vmem_create("kva", 0, 0, PAGE_SIZE,
|
||||
vmem_alloc, vmem_free, kmem_arena,
|
||||
16 * PAGE_SIZE, VM_NOSLEEP | VM_BOOTSTRAP, IPL_VM);
|
||||
(kmem_arena_small ? 4 : 16) * PAGE_SIZE,
|
||||
VM_NOSLEEP | VM_BOOTSTRAP, IPL_VM);
|
||||
|
||||
UVMHIST_LOG(maphist, "<- done", 0,0,0,0);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue