bug-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Review of Thomas's >2GB ext2fs proposal


From: Thomas Bushnell BSG
Subject: Re: Review of Thomas's >2GB ext2fs proposal
Date: 17 Aug 2004 02:12:52 -0700
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.3

"Neal H. Walfield" <address@hidden> writes:

> This is not what I am doing.  I understand the problem of having two
> pagers refer to the same block on disk.  But I am referring to
> recursive mappings (which is exactly what Roland wants to take
> advantage of in his proposal).  Hence, the store returns a memory
> object.  That is used by two pagers as backing store---always via a
> vm_map and memory_object_data_supply but never using store_read and
> store_write.  Hence we have:
> 
>   mapping -> user pager A \
>                             => store pager -> disk
>   mapping -> user pager B /
> 
> not:
> 
>   mapping -> user pager A -> disk
>   mapping -> user pager B -> disk
> 
> The latter of which, I agree, does cause problems.

So a given data page is read in from disk, and assigned to the store
pager.

Now you get a page fault on user pager A, and the address you provide
for the data to fill the fault is in your mapping of the store pager.
The kernel copies the page, and assigns the copy to user pager A.

You now have the same data in two separate pages, cached twice.  

The recursive mappings you would like to happen do not happen in
Mach. 

> If that is the case, then I think we should drop the whole reference
> counting system and have the accessor functions just do a vm_map and
> vm_unmap as required.  This means that we also don't need the hashes
> (which are fairly delicate).  Do you feel that confident that this is
> really that cheap?  If so, why do you still want to use a cache?

You seem to want everything to either be very heavy cost or very
cheap.

The cost of a wrong page eviction decision is very expensive: you must
read in new data from backing store.

The cost of a wrong mapping cache eviction decision is cheap. 

That does not mean it is the same as never caching.  There is a middle
ground, where it is reasonable to keep a cache of mappings, because
vm_map does have some cost, and yet the cost is not so extraordinary
that you should pretend it is the same as a page fault.

It is a middlin cost.

Thomas




reply via email to

[Prev in Thread] Current Thread [Next in Thread]