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

Good Shakedown Test for 36xx?



    Date: Tue, 11 Apr 89 15:03 PDT
    From: DE@PHOENIX.SCH.Symbolics.COM (Doug Evans)

	Date: Tue, 11 Apr 89 00:22 EDT
	From: pan@Athena.Pangaro.Dialnet.Symbolics.Com (Paul Pangaro)

	My TSSE uses a loop consisting essentially of:

	(loop do (apropos 'a)
		 (cp::com-clear-output-history)
		 (si:full-gc))

	The purpose is to run the hell out of the machine to show up
	"errors". I have a new machine and I want to check it out fully
	(with tests of I/O ports etc., in addition to the above).

	Realizing that no single test can be exhaustive, any opinions on
	the utility of this? Anything else that is also simple, which more
	fully "tests" the system? Anybody have a suite short and sweet
	that tests lots?

    Paul ... I have a three step reliability check for Lispms:

    Level 1:  A machine boots a world, loads a (decently complex) login init
	      file, and completes a full GC.

    Level 2:  The machine sucessfully completes a Save World Complete.  This
	      actually pounds the disk IO (and the rest of the machine) more
	      than a GC or regular paging.

    Level 3:  The machine sucessfully boots the new world (confirming that
	      the disk save was good), loads the same login init file, and
	      completes another full GC. 

    This is expensive in terms of disk file space, but is a very good test
    for Lispm hardware.

That's a pretty thorough test alright.  One functional test used by the
factory is a loop that conses lots and lots of ephemeral objects with the
dynamic GC turned on, in such a fashion that the objects survive at least the
first level of the ephemeral GC.  I think the driving function looks something
like:

(defun test-gc (n)
  (let ((si:gc-flip-ratio <1 or less>)
        (si:gc-flip-minimum-ratio <something less than si:gc-flip-ratio>)
	(si:gc-reclaim-immediately-if-necessary t))
    (cons-a-lot n)))		; adjust N to maximize consing

(defun cons-a-lot (n-levels)
  (make-array 10
	      :initial-element
	      (make-list 10
			 :initial-element (if (zerop n-levels)
					      nil
					    (cons-a-lot (1- n))))))

With appropriate parameters, you can make it run as long as you want on any
size paging space.  Of course there are lots of features that this test
ignores, but it's a start.

	(By the way, should this run out of swapping space? With small
	paging area, it only repeats a few times...)

Depends on what you call "small".  I think we use a minimum of 60,000 blocks
in the factory test, but I don't spend much time at the factory any more.

	Best,
	PANgaro