1
0
mirror of https://git.FreeBSD.org/src.git synced 2025-01-20 15:43:16 +00:00

Add init_param3() to subr_param. This function is called

immediately after the kernel map has been sized, and is
the optimal place for the autosizing of memory allocations
which occur within the kernel map to occur.

Suggested by:	bde
This commit is contained in:
Mike Silbersack 2003-07-11 00:01:03 +00:00
parent 928a49644f
commit 347194c172
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=117391
3 changed files with 22 additions and 26 deletions

View File

@ -444,6 +444,11 @@ kmeminit(dummy)
if (((vm_kmem_size / 2) / PAGE_SIZE) > cnt.v_page_count)
vm_kmem_size = 2 * cnt.v_page_count * PAGE_SIZE;
/*
* Tune settings based on the kernel map's size at this time.
*/
init_param3(vm_kmem_size / PAGE_SIZE);
/*
* In mbuf_init(), we set up submaps for mbufs and clusters, in which
* case we rounddown() (nmbufs * MSIZE) and (nmbclusters * MCLBYTES),

View File

@ -135,23 +135,6 @@ void
init_param2(long physpages)
{
/* Kernel map size */
int kmempages, kmemtunable;
kmempages = VM_KMEM_SIZE / PAGE_SIZE;
#if defined(VM_KMEM_SIZE_SCALE)
if ((physpages / VM_KMEM_SIZE_SCALE) > kmempages)
kmempages = (physpages / VM_KMEM_SIZE_SCALE);
#endif
#if defined(VM_KMEM_SIZE_MAX)
if (kmempages * PAGE_SIZE >= VM_KMEM_SIZE_MAX)
kmempages = VM_KMEM_SIZE_MAX / PAGE_SIZE;
#endif
kmemtunable = 0;
TUNABLE_INT_FETCH("kern.vm.kmem.size", &kmemtunable);
if (kmemtunable != 0)
kmempages = kmemtunable / PAGE_SIZE;
kmempages = min(physpages, kmempages);
/* Base parameters */
maxusers = MAXUSERS;
TUNABLE_INT_FETCH("kern.maxusers", &maxusers);
@ -179,7 +162,23 @@ init_param2(long physpages)
TUNABLE_INT_FETCH("kern.maxfiles", &maxfiles);
maxprocperuid = (maxproc * 9) / 10;
maxfilesperproc = (maxfiles * 9) / 10;
/*
* Cannot be changed after boot.
*/
nbuf = NBUF;
TUNABLE_INT_FETCH("kern.nbuf", &nbuf);
ncallout = 16 + maxproc + maxfiles;
TUNABLE_INT_FETCH("kern.ncallout", &ncallout);
}
/*
* Boot time overrides that are scaled against the kernel map
*/
void
init_param3(long kmempages)
{
/*
* Limit number of pipes to a reasonable fraction of kmap entries,
* pageable pipe memory usage to 2.5% of the kernel map, and wired
@ -196,13 +195,4 @@ init_param2(long physpages)
maxpipekva = 512 * 1024;
if (maxpipekvawired < 512 * 1024)
maxpipekvawired = 512 * 1024;
/*
* Cannot be changed after boot.
*/
nbuf = NBUF;
TUNABLE_INT_FETCH("kern.nbuf", &nbuf);
ncallout = 16 + maxproc + maxfiles;
TUNABLE_INT_FETCH("kern.ncallout", &ncallout);
}

View File

@ -147,6 +147,7 @@ void critical_enter(void);
void critical_exit(void);
void init_param1(void);
void init_param2(long physpages);
void init_param3(long kmempages);
void tablefull(const char *);
int kvprintf(char const *, void (*)(int, void*), void *, int,
__va_list) __printflike(1, 0);