Re: clustering page-ins

Jamie Lokier (lkd@tantalophile.demon.co.uk)
Wed, 11 Aug 1999 19:34:27 +0200


Chuck Lever wrote:
> > preload_page() should duplicate some of the code in do_no_page(): it
> > should fill in a pte, but only if the pte is "not present" already, and
> > the new pte should be marked "old" not "young". If any memory
> > allocation is required (for pgds and pmds) it should simply return
> > without doing the allocation.
>
> actually, i think you'd want to do just the opposite. allocating the
> extra pmds and ptes during read-ahead is exactly what you want to do,
> while diddling the entries in already existing pte's will just break page
> faulting in subtle ways.

1. What do you mean by "allocating extra ptes during read-ahead"? You mean
allocate pmds when read-ahead crosses a table boundary, e.g. every 1024
pages on x86?

2. I think, for non-swap ptes, that "fill in a pte, but only if the pte is
'not present' already" means exactly the same as "do not diddle entries
in existing ptes" so I must be missing your point.

> 1. pre-allocate pte's during read-ahead, and do read-ahead just as we've
> discussed.
>
> 2. fault in and map in entire clusters at a time. if the page fault
> happens on the first page in a cluster, then watch for sequential cluster
> faults, and do read-ahead.

I still don't see what you mean be pre-allocate ptes without faulting in
pages. Are you proposing to store "not present" references to the
read-ahead physical pages so that future faults can avoid the hash
lookup?

so many questions :-)
thanks,
-- Jamie

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/