gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gcl-devel] si::*optimize-maximum-pages*


From: Camm Maguire
Subject: [Gcl-devel] si::*optimize-maximum-pages*
Date: 03 Apr 2004 15:41:32 -0500
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings!  Just a quick note to indicate that I've just committed
some changes addressing at least the bulk of the problem you so
helpfully noticed.  In brief, GCL will now try to automatically tune
its maximum page allocation per page type given the empirically
observed GBC trigger rates and current sizes for each type.  One can
disable this behavior should one be extremely worried about memory
usage by setting the variable si::*optimize-maximum-pages* to NIL.
The default is T.

[ Matt, I'll write you separately when a binary is available for
testing. ]

Please see the comment in alloc.c just added if interested.

Remaining for the future

1) To reexamine the page cost algorithm when SGC is enabled
2) To differentiate the costs of each page type.

In general, this patch

1) fixes your fill-symtab scaling problem.  GC load is now
   linear/proportional to runtime.
2) Reduces the GC load for maxima make check by about half.
3) Cuts the (save-acl2 time of the acl2 build  by about 2/3
4) shaves about 1/4 of the compilation time for AXIOM's
   EXPEXPAN.spad. 
5) Gives statistics like the following for Paul's random tester:

    56 | 
 14004/14004   3.5%     148 CONS RATIO LONG-FLOAT COMPLEX STRUCTURE
  1931/3415   10.5%      20 FIXNUM SHORT-FLOAT CHARACTER RANDOM-STATE READTABLE 
NIL
   610/1497   14.2%      14 SYMBOL STREAM
     1/2      23.1%         PACKAGE
  3247/3247    1.5%      25 ARRAY HASH-TABLE VECTOR BIT-VECTOR PATHNAME 
CCLOSURE FAT-STRING
   260/621    10.5%         STRING
  2542/2542    0.3%      16 CFUN BIGNUM
    11/136    84.6%         SFUN GFUN CFDATA SPICE NIL

  4443/6205              62 contiguous (543 blocks)
       26214                hole
       23590   0.1%      97 relocatable

     22606 pages for cells
     76853 total pages
    151751 pages available
     33540 pages in heap but not gc'd + pages needed for gc marking
    262144 maximum pages

real time       :     77.140 secs
run-gbc time    :     23.790 secs
child run time  :     52.420 secs
gbc time        :      0.650 secs

versus

    56 | 
  4407/4407   12.2%     589 CONS RATIO LONG-FLOAT COMPLEX STRUCTURE
   366/366    56.0%     696 FIXNUM SHORT-FLOAT CHARACTER RANDOM-STATE READTABLE 
NIL
   212/450    41.0%         SYMBOL STREAM
     1/2      23.1%         PACKAGE
  1882/2227    2.5%      39 ARRAY HASH-TABLE VECTOR BIT-VECTOR PATHNAME 
CCLOSURE FAT-STRING
   131/621    20.9%         STRING
   515/515     1.3%      27 CFUN BIGNUM
    11/136    84.6%         SFUN GFUN CFDATA SPICE NIL

  6572/8748              61 contiguous (544 blocks)
       26214                hole
       35385   0.0%      52 relocatable

      7525 pages for cells
     75696 total pages
    141113 pages available
     45335 pages in heap but not gc'd + pages needed for gc marking
    262144 maximum pages

real time       :     47.700 secs
run-gbc time    :     17.340 secs
child run time  :     29.500 secs
gbc time        :      0.610 secs


Feedback/tests/reports most appreciated.

Take care,


Bruno Haible <address@hidden> writes:

> > 2) If type i is the type governing GC due to temporary garbage
> >    generation, as in the definition of 'r' above, increase m_i to
> >    minimize
> >
> >         (R+r)*C
> 
> Sounds all right. However only experiments can show how it behaves in
> practice. I have no idea how a dynamical system with 25 variables behaves.
> All I can predict from mathematical theory are dynamical systems with 1 or 2
> variables :-)
> 
> Bruno
> 
> 
> 

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

[Prev in Thread] Current Thread [Next in Thread]