Subject: Re: one cause of arrays full
From: stansbury.pa
To: Lichtenberg.wbst, vanMelle.pa
Cc: stansbury.pa, Masinter.pa, Lispsupport.pa
Date: 23 Jul 84 19:16 PDT

The bug in allocblock which Larry found has made me rethink page allocation in the file system.

I currently use page-aligned blocks of array space.  The pages must be aligned because the low-level routines which transfer pages to and from the disk assume that the buffer they are handed is page aligned.  I use array space rather than vmempagep's because I have to keep pointers to the middle of these things, and the dlion gc microcode and macrocode disagree on vmempagep collection just enough to cause occasional crashes with big refcount missing.

Unfortunately, using aligned chunks of array space is quite wasteful because array blocks each have 2 words leader and 2 words tail.  So allocating a succession of page-long aligned array blocks leaves a succession of 124-word unused and unmergeable blocks behind.

The file system currently uses between 25 and 100 such pages.  Of these, about 25 are permanent and the rest have a reasonably high turnover rate.

Question 1 (Mitch):  Do the buffers I hand to low-level disk transfer routines REALLY have to be page-aligned?  Could those routines be rewritten so that buffers could be non-aligned?

Question 2 (Bill & Larry):  Could the gc problems with vmempagep's be fixed?

Need to know soon, because I'm trying to close the Klamath file system....

-- Tayloe.

-----

Date: 23 Jul 84 23:44 PDT
From: JonL.pa
Subject: Re: one cause of arrays full
In-reply-to: stansbury.pa's message of 23 Jul 84 19:16 PDT
To: stansbury.pa
cc: Lichtenberg.wbst, vanMelle.pa, Masinter.pa, Lispsupport.pa

Those pages with 124 cells on them, preceeding one of your page-aligned arrayblocks, don't necessarily fall into the "unusable space" quagmire -- it would be interesting to see a STORAGE printout, with the newly-announced STORAGE function, before worrying too much about the load that the DLion FS puts on array space.

One the otherhand, if you really don't need page-alignment, or of VMEMPAGEPs will do . . .

-- JonL --

-----

Date: 24 Jul 84 08:22:09 PDT (Tuesday)
From: Lichtenberg.WBST
Subject: Re: one cause of arrays full
In-reply-to: stansbury.pa's message of 23 Jul 84 19:16 PDT
To: stansbury.pa
cc: Lichtenberg, vanMelle.pa, Masinter.pa, Lispsupport.pa

It is not feasible to pass non-aligned buffers to the disk microcode.  After looking through the microcode (both Trident and Shugart), I have determined that it is not possible to transfer across page boundaries.  The page MUST, then, be aligned.  If worst came to worst (this would hurt performance), allocate ONE buffer and \BLT in and out of it as your page-read/write routine.  Granted, it is awkward (and slow) but it will do the job.

Also, if you keep pointers to the VMEMPAGEPs themselves, won't they be kept from being collected?  Then, you could drop the pointer when you're through with it and it would go away in peace... or something like that.

/Mitch.

((
TIMESROMAN
?1(DEFAULTFONT 1 (GACHA 10) (GACHA 8) (TERMINAL 8))
&:".`Ç	“¸MK&;??['&;:¸Ùpzº