Follow-up Comment #1, bug #28730 (project hurd): I think we should replace the cache system for memory objects (at least for the ones with external pagers). How about something like this:
* GNU Mach ** Get rid of vm_object_cached_*. If an object can persist, it'll persist forever (or until a pager changes its attributes). ** Separate pages of memory objects with external pagers into a different queue. Treat it like cache. If we want to free some, ask the translator (by using one of its pagers) to unallocate some objects (translators can select the ones they want to, Mach will only give them a hint on how many space should be freed). This requires a new interface. ** (Optional) Maintain cached pages statistics per task (pager's owner). Use it as foundation for cache quotas. * Hurd ** Keep track of every action that could alter the contents of a pager. Take special attention with mmap(). Use a lru queue with pointers to the pagers. For everyone of those actions, mark the object as dirty and update queue. ** Sync only objects marked as dirty. ** When GNU Mask ask us to unallocate some objects, start running through the queue until the hint provided by the kernel is archieved. _______________________________________________________ Reply to this item at: <http://savannah.gnu.org/bugs/?28730> _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/