Re: broken VM in 2.4.10-pre9

Eric W. Biederman
2001-09-19T22:58:49Z

"Rob Fuller" <rfuller@nsisoftware.com> writes:

> In my one contribution to this thread I wrote:
>
> "One argument for reverse mappings is distributed shared memory or
> distributed file systems and their interaction with memory mapped files.
> For example, a distributed file system may need to invalidate a specific
> page of a file that may be mapped multiple times on a node."
>
> I believe reverse mappings are an essential feature for memory mapped
> files in order for Linux to support sophisticated distributed file
> systems or distributed shared memory. In general, this memory is NOT
> anonymous. As such, it should not affect the performance of a
> fork/exec/exit.
>
> I suppose I confused the issue when I offered a supporting argument for
> reverse mappings. It's not reverse mappings for anonymous pages I'm
> advocating, but reverse mappings for mapped file data.

The reverse mapping issue is not do we have a way to find where in the page
tables a page is mapped. But if we keep track of it in a data structure
that allows us to do so extremely quickly. The worst case for our current
data structures to unmap one page is O(page mappings).

For distributed filesystems contention sucks. No matter how you play it
contention for file data will never be a fast case. Not if you have
very many people contending for the data. So this isn't a fast case.

Additionally our current data structures are optimized for unmapping
page ranges. Since if your contention case is sane you will be
grabbing more than 4k at a time our looping through the vm_areas of
a mapping should be more efficient than doing that loop once for
each page that needs to be unmapped.

Eric