Re: [RFC] 2.3/4 VM queues idea

Jamie Lokier
2000-05-25T09:52:02Z

Matthew Dillon wrote:
> Virtual
> page scanning has severe scaleability problems over physical page
> scanning. For example, what happens when you have an oracle database
> running with a hundred independant (non-threaded) processes mapping
> 300MB+ of shared memory?

Actually you can make this scalable quite easily. I think it's
asymptotically equivalent to physical page scanning.

First, ensure the async. unmapper can limit the number of mapped
ptes. Method: whenever the number of established ptes increases
above a high water mark (e.g. due to a page fault), invoke the unmapper
synchronously to push the number below a low water mark. (Both marks
can be the same).

Second, make the scanner scale independently of the virtual addresses
used. Method: store boundary tags in the /unused/ ptes so that
scanning skips unused ptes. Ok, this can have fiddly interactions with
not-present swap entries.

In this way, the work required to scan _all_ mapped pages can be
strictly bounded.

cheers,
-- Jamie