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

re: What Accelerators Work with MCL and Virtual Memory?

Thanks for your info -- I am tryng two cards now, the DiiMOCache 50 Mhz
68030 w/ FPU and 64 KB cache, and the Daystar Turbo 40 w/ 124 KB cache,
which provides a 40 Mhz 68040 and FPU. Both cards claim to, and appear to,
work with virutal memory on the IIci for most apps, but have problems with
MCL when using virtual memory. I can get the DiiMoCache to work with some
VM allocations, though not with VM allocations above 64 MB. The Daystar
doesn't work with VM for MCL at all.

For your info, here are the results of a benchmark I performed with MCL, both
with and without virtual memory, on the two accelerator cards.  I wanted to
see if 64 MB VM really works with the DiiMOCache  50 Mhz 68030 card, i.e. if
I can do more than just launch MCL. 

I wrote the following lisp function, the intent of which is to tie up arbitrarily
large amounts of memory, and continually revisit different portions of memory:

(defun vm (n m)
  (let (L Lcdr
    (setf L nil)
    (loop for i from 1 to n do (push nil L)) 
    (loop for i from 1 to m do
          (format t "~%i = ~D" i)
          (setf Lcdr L)
          (loop while Lcdr do
                (rplaca Lcdr (push i (first Lcdr)))
                (setf Lcdr (rest Lcdr))
          ; (format t "~%list = ~S" L)

Without virtual memory, using the DiiMOCache card and giving MCL a 29 MB
partition, calling

(vm 10000 10000)

produced printout through "i=326" in 39.12 seconds, before its first GC at which
point it had apparently run out of memory.

With virtual memory at 64 MB and MCL given a partition of 60 MB, the same
(vm 10000 10000) function call produced printout through "i=711" in 128.08
seconds, before its first GC and running out of memory. About halfway through
its iterations, the disk started being accessed, indicating VM was really being
used. When the GC occurred, a lot of disk thrashing took place, and I had to power
the machine down.

The fact that i=711 was reached and not i = (2 * 326) = 652 is probably due
the fact that a lot of other lisp functions and data structures from my project 
were also loaded into memory, though they weren't running.

Incidentally when I switched from no VM to 64 MB VM, initially MCL did not
run at all with the Daystar card, though I tried MCL partitions of 29, 50, and 60
MB. This was surprising because in previous tests I had been able to run MCL
at 50 and 60 MB partitions with 64 MB VM. Suspecting another sporadic problem,
I powered down the machine, rebooted, and sure enough, I could then run with
64 MB VM and a 60 MB paritition for MCL.  It appears to me that there is
some kind of "contention" between the Daystar card and the IIci itself, which
affects how VM is allocated at power up time, and is related to how much VM
is being allocated.

Without virtual memory, I was able to run the 40mhz Daystar Turbo 040 card, 
with FPU and 128KB cache. With MCL given a 29MB partition, the (vm 10000 
10000) function call produced printout through "i=326" in 24.17 seconds, before 
its first GC and running out of memory.