Re: broken VM in 2.4.10-pre9

Stephan von Krawczynski
2001-09-16T22:29:35Z

>

>>> (The new code is a simple state machine:
>>>
>>> - touch non-referenced page: set the reference bit
>>>
>>> - touch already referenced page: move it to next list "upwards"
(ie the
>>> active list)
>>>
>>> - age a non-referenced page on a list: move to "next" list
downwards (ie
>>> free if already inactive, move to inactive if currently active)
>>>
>>> - age a referenced page on a list: clear ref bit and move to
beginning of
>>> same list.

> > Are you sure about the _beginning_? You are aging out _all_
non-ref
> > pages in the next step?
>
> Well, it depends on what your definition of "is" is..
>
> Or rather, what the "beginning" is. The way things work now, is that
all
> pages are added to the "beginning", and the aging is done from the
end,
> moving pages at the end to other lists (or, in the case of a
referenced
> page, back to the beginning).

Wait a minute: if you age a page in active by clearing ref-bit and
moving it to beginning of the list, and your next aging cycle starts
from the end, that reads like you have to walk the whole list to find
all the ageable pages for moving "downwards". In fact I expected your
aging to start the list from the beginning, as there should be "most"
of the non-ref entries, and you could stop age-walking hitting the
first ref-page in that list.
This was my guess when aging is used to find possible free pages
_fast_.
Am I wrong or is this idea generally not useable?

Regards,
Stephan