[Openmcl-devel] Checking ivector space use

Jon S. Anthony j-anthony at comcast.net
Mon Mar 15 11:00:47 PDT 2010


On Mon, 2010-03-15 at 13:02 -0400, Gail Zacharias wrote:
> At 3/15/2010 12:10 PM, Jon S. Anthony wrote:
> >On Mon, 2010-03-15 at 11:40 -0400, Gail Zacharias wrote:
> > > At 3/15/2010 11:13 AM, Jon S. Anthony wrote:
> > > >Hi,
> > > >
> > > >Is there any "standard" way to check up on ivector (which I suppose
> > > >really means foreign memory) use?  I tried room, heap-utilization, and
> > > >time, and none report anything about this.  Since the GC pays no
> > > >attention to this stuff, that makes some sense.  But maybe there's
> > > >something I'm missing.
> > >
> > > Terminology problem here - ivectors are things like strings and bit
> > > vectors.  You must mean something else...
> >
> >Well, could be.  I specifically I am looking at ivectors, as made by
> >make-heap-ivector.  The documentation for that says that these are
> >allocated in "foreign memory" and that the GC pays no attention to these
> >objects.
> 
> Ah, ok.  The "foreign memory" is just the malloc heap.  You can get 
> info about the malloc heap with ccl::show-malloc-info:

Cool!  That just works:

$ ccl
Welcome to Clozure Common Lisp Version 1.5-dev-r13464M-trunk
(LinuxX8632)!
? (defun make-page-vector (size)
  #+ccl
  (multiple-value-bind (vector pointer)
      (ccl:make-heap-ivector size '(unsigned-byte 8))
    (list pointer vector)))
MAKE-PAGE-VECTOR
? (setf *print-length* 1000)
(setf *print-array* nil)1000
? 1
NIL
? 1
? (ccl::show-malloc-info)
 arena size: 135168/#x21000
 number of unused chunks = 2
 number of mmap'ed chunks = 0
 total size of mmap'ed chunks = 0/#x0
 total size of malloc'ed chunks = 87288/#x154F8
 total size of free chunks = 47880/#xBB08
 size of releaseable chunk = 42776/#xA718
NIL
? (let ((mem))
  (dotimes (i 20)
    (push (make-page-vector (* 8 (* 1024 1024))) mem))
  mem)
((#<A Foreign Pointer #xB5F08014> #<VECTOR 8388608 type (UNSIGNED-BYTE
8), simple>) ...
...
? (ccl::show-malloc-info)
 arena size: 135168/#x21000
 number of unused chunks = 3
 number of mmap'ed chunks = 20
 total size of mmap'ed chunks = 167854080/#xA014000
 total size of malloc'ed chunks = 87288/#x154F8
 total size of free chunks = 47880/#xBB08
 size of releaseable chunk = 42776/#xA718
NIL
? 

Thanks!

/Jon





More information about the Openmcl-devel mailing list