All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peri Hankey <mpah@thegreen.co.uk>
To: Rik van Riel <riel@redhat.com>
Cc: xen-devel@lists.sourceforge.net
Subject: Re: copy on write memory
Date: Tue, 16 Nov 2004 09:44:49 +0000	[thread overview]
Message-ID: <4199CC11.6050802@thegreen.co.uk> (raw)
In-Reply-To: <Pine.LNX.4.61.0411151934140.20252@chimarrao.boston.redhat.com>

Certainly, UML is best known for copy on write filesystems. But UML's 
SKAS mode is a different way of managing memory, and that was the 
starting point for this proposal, which is about using the copy on write 
semantics of Linux memory management to share memory pages between Xen 
domains. I see now that one person's starting point may prove to be 
another's red herring.

The notion is that there are applications of Xen where there would be 
very many virtual computers running the same set of applications for 
much of the time (eg standard web hosting, honeypots).

In the standard case of a single OS on a single machine, all processes 
are loaded from a common filesystem, so the OS knows which page sets 
start out with shared information. It can use this information to share 
pages between processes so long as those pages are not written to, 
allocating distinct pages to distinct processes when those pages are 
written to - the copy on write semantics.

In the Xen case, you don't want to reinvent and reimplement existing 
mechanisms, especially as these may differ in subtle ways from one guest 
operating system to another. So I suggest it would make sense to create 
mechanisms that allow some Xen domains to operate as memory management 
servers to groups of related domains.

In effect we create a memory manager privilege. Suppose we have a memory 
manager domain M1 with a collection of memory client domains M1-x, where 
each memory client domain has its own kernel address space KASx, a set 
of modified pages Wx and a set of shared pages Rx. Then the situation we 
want to see is this:

M1      doesn't actually execute any application code, just manages memory for its clients
M1-a    executes application code in (KASa, Ra, Wa) calling on M1 for memory management
M1-b    executes application code in (KASb, Rb, Wb) calling on M1 for memory management
M1-c    executes application code in (KASc, Rc, Wc) calling on M1 for memory management
...

There is a connection with copy-on-write storage. The execution state of 
a client domain x can be frozen as:

'Rx'  which identifies a set of pages that are shared read-only with similar clients
KASx  which is the kernel address space page set for this domain
Wx    which is the set of user address space pages that have been written to by this domain

The total long-term state of a client domain can be characterised by adding

'SRx' which identifies blocks in read-only storage that are shared with similar clients
SWx   which identifies which files in read-write storage that belong to this client domain.

It seems to me that a memory manager domain, which pretty much has to 
serve pages initially drawn from a filesystem that is shared read-only 
between its clients, is also in a position to manage copy-on-write use 
of that file system for its clients, as it already knows which blocks 
and clean and which are dirty.

Peri

> On Mon, 15 Nov 2004, Peri Hankey wrote:
>
>> It occurred to me that the equivalent in the Xen world would be to 
>> use one Linux xenU domain purely as a page-table manager for a 
>> collection of separate xenU domains that are expected or known have 
>> similar process populations.
>
>
> UML copy on write is only for filesystems, isn't it ?
>
> The Xen equivalent would be cloning the xenU root filesystem
> as an LVM snapshot, from a read-only LVM snapshot.  Then each
> xenU virtual system would only use the disk space it writes
> to and no more.
>



-------------------------------------------------------
This SF.Net email is sponsored by: InterSystems CACHE
FREE OODBMS DOWNLOAD - A multidimensional database that combines
robust object and relational technologies, making it a perfect match
for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8

  reply	other threads:[~2004-11-16  9:44 UTC|newest]

Thread overview: 26+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-15 22:01 copy on write memory Peri Hankey
2004-11-16  0:35 ` Rik van Riel
2004-11-16  9:44   ` Peri Hankey [this message]
2004-11-16  9:51     ` Peri Hankey
2004-11-16 15:27     ` urmk
2004-11-16 16:17       ` Mark A. Williamson
2004-11-18 16:56       ` Peri Hankey
2004-11-18 17:11         ` urmk
2004-11-18 17:25           ` Keir Fraser
2004-11-18 18:41             ` Kip Macy
2004-11-18 18:55               ` Keir Fraser
2004-11-18 19:16                 ` Kip Macy
2004-11-18 18:15           ` Peri Hankey
2004-11-19 10:35             ` Jacob Gorm Hansen
2004-11-19 10:59               ` Keir Fraser
2004-11-19 12:02                 ` Jacob Gorm Hansen
2004-11-19 14:50                   ` Keir Fraser
2004-11-22 12:42                     ` Jacob Gorm Hansen
2004-11-25 15:01                       ` of cows and clones: creating domains as clones of saved state Peri Hankey
2004-11-25 21:19                         ` Keir Fraser
2004-11-25 22:13                           ` Peri Hankey
2004-11-25 22:36                             ` Keir Fraser
2004-11-25 22:37                             ` Ian Pratt
2004-11-16 18:10     ` copy on write memory Adam Heath
2004-11-16 18:09   ` Adam Heath
2004-11-16 18:39     ` Matt Ayres

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4199CC11.6050802@thegreen.co.uk \
    --to=mpah@thegreen.co.uk \
    --cc=riel@redhat.com \
    --cc=xen-devel@lists.sourceforge.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.