[Top][All Lists]

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

Viengoos and PREMO pagers

From: Neal H. Walfield
Subject: Viengoos and PREMO pagers
Date: Thu, 03 Jul 2008 13:19:18 +0200
User-agent: Wanderlust/2.14.0 (Africa) SEMI/1.14.6 (Maruoka) FLIM/1.14.8 (Shij┼Ź) APEL/10.6 Emacs/21.4 (i486-pc-linux-gnu) MULE/5.0 (SAKAKI)

I was chatting with a friend last night about Viengoos and he asked
what the advantages of Viengoos are over Mach's PREMO pagers.

The paper on PREMO pagers is:

  Extending The Mach External Pager Interface To Accommodate
  User-Level Page Replacement Policies by Dylan McNamee and Katherine
  Armstrong, 1990.

The main idea is to extend the external pager interface such that when
there is pressure, instead of Mach selecting a page and telling its
associated memory object manager to write that page to backing store
and then free it, Mach sends a notification to the memory object's
manager telling it to choose some pages associated with that memory
object to free.

One shortcoming is that a program may have many memory objects.  For
instance, in the Hurd, a file server associates each file with a
memory object.  Using PREMO pagers, Mach would ask the file server to
choose a page to evict from some specific memory object.  This
severely limits the file server's ability to choose the best page: it
has potentially thousands of memory objects but must choose a page
from the indicated memory object.

Second, although Mach no longer makes the decision regarding which
page to evict, in many cases, it is still not based on application
specific knowledge.  On Viengoos, this is possible, even when using
files.  This is because storage management is separated from memory
management.  When a thread accesses some storage, the *memory* may be
assigned to the activity under which it is running (we say that the
activity has claimed the memory).  This memory is managed according to
that activity's policy.  The application is further able to control
how the memory is managed by assigning it a priority.  This allows it
to control the order in which the frame is evicted.  Finally, a thread
may also register to receive information about an activity, e.g., when
there is memory pressure.  In this case, it can take explicit action
to free memory.

reply via email to

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