gcl-devel
[Top][All Lists]
Advanced

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

Re: [Gcl-devel] GCL exists while running smoe benchmarks


From: Jeronimo Pellegrini
Subject: Re: [Gcl-devel] GCL exists while running smoe benchmarks
Date: Sun, 11 Nov 2018 19:49:58 -0200
User-agent: Mutt/1.10.1 (2018-07-13)

Hello!

Thank you a lot!

Reserving code block space inside the program worked fine.

I tried Setting GCL_MEM_MULTIPLE=0.5 when calling gcl, and the problem
(which I had reported in my previous email) still happened. Also tried 
0.25, and it still happened. It worked with 0.1. The weird thing is that
I have 32Gb RAM on this system, and it's mostly unused.


Setting GCL_MEM_MULTIPLE=2 when calling gcl causes a different error:

;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3, 
(Debug quality ignored)
;; Finished compiling /tmp/user/1000/gazonk_10795_0.o.
;; Loading #P"/tmp/user/1000/gazonk_10795_0.o"
;; start address for /tmp/user/1000/gazonk_10795_0.o 0x2493ed70
;; Finished loading #P"/tmp/user/1000/gazonk_10795_0.o"
;; Compiling /tmp/user/1000/gazonk_10795_0.lsp.

Unrecoverable error: value stack overflow.
Emergency reset complete

Also, when I was compiling GCL itself, it used up to 20Gb RAM, took
a couple of hours, but managed to finish.

I wonder if there is a simple way to ask the amount of memory in the
system and then allocate code block space.

And I also see that GCL doesn't perform too well in the benchmarks,
because it spends a lot of time doing GC:

RUN-CVECTOR-SET (SET)
real time       :      7.449 secs
run-gbc time    :      7.360 secs
child run time  :      0.000 secs
gbc time        :      0.000 secs
RUN-CVECTOR-GET (GET)
real time       :      1.799 secs
run-gbc time    :      1.799 secs
child run time  :      0.000 secs
gbc time        :      0.000 secs
TRAVERSE-CVECTOR-SET (tr-SET)
real time       :     12.069 secs
run-gbc time    :     11.399 secs
child run time  :      0.000 secs
gbc time        :      0.000 secs
TRAVERSE-CVECTOR-GET (tr-GET)
real time       :     19.460 secs
run-gbc time    :      9.859 secs
child run time  :      0.000 secs
gbc time        :      0.000 secs
RUN-HASH-SET (SET)
real time       :      4.699 secs
run-gbc time    :      4.699 secs
child run time  :      0.000 secs
gbc time        :      0.000 secs
RUN-HASH-GET (GET)
real time       :      4.650 secs
run-gbc time    :      4.650 secs
child run time  :      0.000 secs
gbc time        :      0.000 secs
TRAVERSE-HASH-SET (tr-SET)
real time       :      5.010 secs
run-gbc time    :      5.000 secs
child run time  :      0.000 secs
gbc time        :      0.000 secs
TRAVERSE-HASH-GET (tr-GET)
real time       :      4.889 secs
run-gbc time    :      4.880 secs
child run time  :      0.000 secs
gbc time        :      0.000 secs
Plain array (SET)
real time       :      2.829 secs
run-gbc time    :      2.779 secs
child run time  :      0.000 secs
gbc time        :      0.000 secs
Plain array (GET)
real time       :      0.000 secs
run-gbc time    :      0.000 secs
child run time  :      0.000 secs
gbc time        :      0.000 secs

I tried using GCL_GC_PAGE_THRESH=0.8, and it seemed to make no
difference. Are there tools to debug and trace GC behavior?

J.



On Sun, Nov 11, 2018 at 01:14:47PM -0500, Camm Maguire wrote:
> Greetings!
> 
> GCL can now make use of all system memory available.  On certain
> machines (e.g. amd64) code is compiled in the 'medium memory' model for
> efficiency (and reliability), which means that all code must be loaded
> within the same 2Gb.  If your heap exceeds this before load, and your
> existing code space is full, you get this message.
> 
> To reserve more space for code, do
> 
> (progn (setq si::*code-block-reserve* (make-array 50000000 :element-type
>                                'character :static t) nil))
> 
> Alternatively, you can limit your heap growth with environment variables
> as explained on this list -- search for GCL_MEM_MULTIPLE.
> 
> Please let me know if problems persist.  Thanks for checking this out!
> 
> Take care,
> 
> Jeronimo Pellegrini <address@hidden> writes:
> 
> > Now -- could that be loop unrolling that exceeded the max size that PROGN 
> > takes in GCL?
> >
> > J.
> >
> > On November 9, 2018 5:23:05 PM GMT-02:00, Jeronimo Pellegrini 
> > <address@hidden> wrote:
> >
> >  Hello,
> >
> > So -- I had used GCL in the past with Spartns 
> > (https://gitlab.com/jpellegrini/spartns)
> > and it worked fine. However, currently this is what happens:
> >
> > - the released version (Debian package, 2.6.12-80) fails
> >   several Spartns unit tests. This is finem because:
> >
> > - the git checkout does pass all tests! However, when running 
> >   the benchmarks, it exits abnormally:
> >
> > $ GCL_ANSI=1 gcl
> > GCL (GNU Common Lisp)  2.7.0 ANSI    Nov  6 2018 23:26:25
> > Source License: LGPL(gcl,gmp,pargcl), GPL(unexec,bfd,xgcl)
> > Binary License:  GPL due to GPL'ed components: (XGCL READLINE UNEXEC)
> > Modifications of this banner must retain notice of a compatible license
> > Dedicated to the memory of W. Schelter
> >
> > Use (help) to get some basic information on how to use GCL.
> > Temporary directory for compiler files set to /tmp/user/1000/
> >
> >  (si::use-fast-links nil) 
> >
> > NIL
> >
> >  (load "do-benchmarks.lisp")
> >
> > ...
> > ... ;; lots of normal output here, from other functions being compiled
> > ...
> > ;; OPTIMIZE levels: Safety=0 (No runtime error checking), Space=0, Speed=3, 
> > (Debug quality ignored)
> > ;; Finished compiling /tmp/user/1000/gazonk_12854_0.o.
> > ;; Loading #P"/tmp/user/1000/gazonk_12854_0.o"
> >
> > Error: 
> > Signalled by PROGN.
> > Condition in PROGN [or a callee]: INTERNAL-SIMPLE-ERROR: The assertion v && 
> > (unsigned long)(v+sz)<MAX_CODE_ADDRESS
> >  on line 1035 of alloc.c in function alloc_code_space
> >  failed: Success
> >
> > Broken at SYSTEM::BREAK-LEVEL.  Type :H for Help.
> >     1  Return to top level. 
> > SPARTNS>> :bt
> >
> > #0   INVOKE-DEBUGGER {loc0=#<conditions::internal-simple-error.0>} [ihs=21]
> > #1   LOAD-FASL {loc0=#P"/tmp/user/1000/gazonk_12854_0.o",loc1=nil} [ihs=18]
> > #2   LOAD-PATHNAME 
> > {loc0=#P"/tmp/user/1000/gazonk_12854_0.o",loc1=nil,loc2=:error,loc3=nil,loc4=nil...}
> >  [ihs=17]
> > #3   LOAD {loc0=#P"/tmp/user/1000/gazonk_12854_0.o"} [ihs=16]
> > #4   COMPILE {loc0=run-cvector-get,loc1=(nil),loc2=nil} [ihs=15]
> > #5   LOAD-STREAM {} [ihs=11]
> > #6   LOAD-PATHNAME 
> > {loc0=#P"benchmark.lisp",loc1=nil,loc2=:error,loc3=nil,loc4=nil,loc5=#<input
> >  str...} [ihs=10]
> > #7   LOAD {loc0="benchmark.lisp"} [ihs=9]
> > #8   LOAD-STREAM {} [ihs=7]
> > #9   LOAD-PATHNAME 
> > {loc0=#P"do-benchmarks.lisp",loc1=nil,loc2=:error,loc3=nil,loc4=nil,loc5=#<input...}
> >  [ihs=6]
> > #10   LOAD {loc0="do-benchmarks.lisp"} [ihs=5]
> >
> > The benchmarks were written in a very lazy state of mind, so I have
> > a big macro that generates lots of functions. But I wasn't expecting this,
> > since the generated functions are actually simple (nested loops for 
> > accessing
> > vectors and hashtables, mostly)...
> >
> > What does the error mean?
> > It's funny that the error happens not during the execution of the benchmark,
> > but when the function (which is quite simple actually) is being compiled!
> >
> > That something called "MAX_CODE_ADDRESS" has been exceeded makes me 
> > worried! :-)
> >
> > What could I possibly be doing to trigger that?
> >
> > (Anyway -- ECL, SBCL, Clisp, ccl seem to compile and run the benchmarks 
> > with no
> >  problem)
> >
> > The easy way to reproduce:
> >
> > $ git clone https://gitlab.com/jpellegrini/spartns.git
> > $ cd spartns
> > $ GCL_ANSI=1 gcl
> >
> >  (si::use-fast-links nil)
> >
> >  (load "do-benchmarks.lisp")
> >
> > Thanks,
> > J.
> > ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> > Gcl-devel mailing list
> > address@hidden
> > https://lists.gnu.org/mailman/listinfo/gcl-devel
> 
> -- 
> 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]