Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 17 Dec 1995 13:41:18 EDT
From:      "Kaleb S. KEITHLEY" <kaleb@x.org>
To:        hackers@freefall.FreeBSD.org
Subject:   Re: growing X server processes 
Message-ID:  <199512171841.SAA19173@exalt.x.org>
In-Reply-To: Your message of Fri, 15 Dec 1995 13:37:05 EDT. <6990.819031025@critter.tfs.com> 

next in thread | previous in thread | raw e-mail | index | archive | help

> > I use it for everything. Without gnumalloc my server would easily
> > grow to ~10meg and never shrink. This was not very good on my 8meg ram/
> > 32meg swap machine to have a third of my swap consumed by unused server
> >
> You should try out the malloc in -current then.  I would probably do even
> better than gnumalloc in low-ram environments.
> 

Here's a patch that is a slight improvement over the malloc.c in -current.
If you run a ktrace on the simple test program that I posted previously 
you'll see that it behaves a little better in that case.

But it's still not perfect. With this patch my X server idles at ~3.5meg, 
as opposed to ~4meg without it and ~3meg using gnumalloc. I think this
points out that your free page management needs to be rethought.

--

Kaleb

*** /usr/src/lib/libc/stdlib/malloc.c-current	Sun Dec 17 06:55:28 1995
--- /usr/src/lib/libc/stdlib/malloc.c	Sun Dec 17 08:18:21 1995
***************
*** 493,498 ****
--- 493,499 ----
  malloc_init ()
  {
      char *p;
+     static void * malloc_bytes (size_t);
  
  #ifdef EXTRA_SANITY
      malloc_junk = 1;
***************
*** 593,598 ****
--- 594,606 ----
  
      malloc_ninfo = malloc_pagesize / sizeof *page_dir;
  
+     /* 
+ 	hackity hack hack, pre-allocate the freepage list pointer to 
+ 	improve odds of being able to return pages to the OS that are 
+ 	allocated by the first calls to malloc.
+      */
+     px = (struct pgfree *) malloc_bytes (sizeof(struct pgfree));
+ 
      /* Been here, done that */
      initialized++;
  }
***************
*** 990,996 ****
  	    pf = px;
  	    px = 0;
  	} else if (pf->end == ptr ) {
! 	    /* Append to the previuos entry */
  	    pf->end += l;
  	    pf->size += l;
  	    if (pf->next && pf->end == pf->next->page ) {
--- 998,1004 ----
  	    pf = px;
  	    px = 0;
  	} else if (pf->end == ptr ) {
! 	    /* Append to the previous entry */
  	    pf->end += l;
  	    pf->size += l;
  	    if (pf->next && pf->end == pf->next->page ) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199512171841.SAA19173>