WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-api

[Xen-API] [PATCH 1 of 2] [doc]: add latex source for the document which

To: xen-api@xxxxxxxxxxxxxxxxxxx
Subject: [Xen-API] [PATCH 1 of 2] [doc]: add latex source for the document which describes the per-host ballooning daemon
From: David Scott <dave.scott@xxxxxxxxxxxxx>
Date: Tue, 15 Dec 2009 20:16:39 +0000
Delivery-date: Tue, 15 Dec 2009 12:12:25 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxxx
In-reply-to: <patchbomb.1260908198@xxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-api-request@lists.xensource.com?subject=help>
List-id: Discussion of API issues surrounding Xen <xen-api.lists.xensource.com>
List-post: <mailto:xen-api@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/mailman/listinfo/xen-api>, <mailto:xen-api-request@lists.xensource.com?subject=unsubscribe>
Sender: xen-api-bounces@xxxxxxxxxxxxxxxxxxx
# HG changeset patch
# User David Scott <dave.scott@xxxxxxxxxxxxx>
# Date 1260907858 0
# Node ID ce0f41b2f00a9f1fd3a8a371f315757c34f9d166
# Parent  2eb768a7ff47cb5c3483e248099279c893bfb7fa
[doc]: add latex source for the document which describes the per-host 
ballooning daemon.

Signed-off-by: David Scott <dave.scott@xxxxxxxxxxxxx>

diff -r 2eb768a7ff47 -r ce0f41b2f00a docs/squeezed/Makefile
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/squeezed/Makefile    Tue Dec 15 20:10:58 2009 +0000
@@ -0,0 +1,4 @@
+default:
+       pdflatex main.tex
+       pdflatex main.tex
+
diff -r 2eb768a7ff47 -r ce0f41b2f00a docs/squeezed/coversheet.tex
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/squeezed/coversheet.tex      Tue Dec 15 20:10:58 2009 +0000
@@ -0,0 +1,42 @@
+%
+% Copyright (c) 2009 Citrix Systems Inc.
+% This file is covered by the version 1.2 of the GNU Free Documentation 
License (see fdl.tex)
+%
+
+\pagestyle{empty}
+
+\doctitle{} \hfill \revstring{}
+
+\vspace{1cm}
+
+\begin{center}
+%\resizebox{8cm}{!}{\includegraphics{\coversheetlogo}}
+
+\vspace{2cm}
+
+\begin{Huge}
+  \doctitle{}
+\end{Huge}
+
+\vspace{1cm}
+\begin{Large}
+Version: \revstring{}\\
+Date: \datestring{}
+\\
+\releasestatement{}
+
+\vspace{1cm}
+\begin{tabular}{rl}
+\docauthors{}
+\end{tabular}
+\end{Large}
+\end{center}
+\vspace{.5cm}
+
+\vfill
+
+\noindent
+\legalnotice{}
+
+\newpage
+\pagestyle{fancy}
diff -r 2eb768a7ff47 -r ce0f41b2f00a docs/squeezed/fdl.tex
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/squeezed/fdl.tex     Tue Dec 15 20:10:58 2009 +0000
@@ -0,0 +1,488 @@
+\chapter{GNU Free Documentation License}
+%\label{label_fdl}
+
+ \begin{center}
+
+       Version 1.2, November 2002
+
+
+ Copyright \copyright 2000,2001,2002  Free Software Foundation, Inc.
+ 
+ \bigskip
+ 
+     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+  
+ \bigskip
+ 
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+\end{center}
+
+
+\begin{center}
+{\bf\large Preamble}
+\end{center}
+
+The purpose of this License is to make a manual, textbook, or other
+functional and useful document "free" in the sense of freedom: to
+assure everyone the effective freedom to copy and redistribute it,
+with or without modifying it, either commercially or noncommercially.
+Secondarily, this License preserves for the author and publisher a way
+to get credit for their work, while not being considered responsible
+for modifications made by others.
+
+This License is a kind of "copyleft", which means that derivative
+works of the document must themselves be free in the same sense.  It
+complements the GNU General Public License, which is a copyleft
+license designed for free software.
+
+We have designed this License in order to use it for manuals for free
+software, because free software needs free documentation: a free
+program should come with manuals providing the same freedoms that the
+software does.  But this License is not limited to software manuals;
+it can be used for any textual work, regardless of subject matter or
+whether it is published as a printed book.  We recommend this License
+principally for works whose purpose is instruction or reference.
+
+
+\begin{center}
+{\Large\bf 1. APPLICABILITY AND DEFINITIONS}
+\addcontentsline{toc}{section}{1. APPLICABILITY AND DEFINITIONS}
+\end{center}
+
+This License applies to any manual or other work, in any medium, that
+contains a notice placed by the copyright holder saying it can be
+distributed under the terms of this License.  Such a notice grants a
+world-wide, royalty-free license, unlimited in duration, to use that
+work under the conditions stated herein.  The \textbf{"Document"}, below,
+refers to any such manual or work.  Any member of the public is a
+licensee, and is addressed as \textbf{"you"}.  You accept the license if you
+copy, modify or distribute the work in a way requiring permission
+under copyright law.
+
+A \textbf{"Modified Version"} of the Document means any work containing the
+Document or a portion of it, either copied verbatim, or with
+modifications and/or translated into another language.
+
+A \textbf{"Secondary Section"} is a named appendix or a front-matter section of
+the Document that deals exclusively with the relationship of the
+publishers or authors of the Document to the Document's overall subject
+(or to related matters) and contains nothing that could fall directly
+within that overall subject.  (Thus, if the Document is in part a
+textbook of mathematics, a Secondary Section may not explain any
+mathematics.)  The relationship could be a matter of historical
+connection with the subject or with related matters, or of legal,
+commercial, philosophical, ethical or political position regarding
+them.
+
+The \textbf{"Invariant Sections"} are certain Secondary Sections whose titles
+are designated, as being those of Invariant Sections, in the notice
+that says that the Document is released under this License.  If a
+section does not fit the above definition of Secondary then it is not
+allowed to be designated as Invariant.  The Document may contain zero
+Invariant Sections.  If the Document does not identify any Invariant
+Sections then there are none.
+
+The \textbf{"Cover Texts"} are certain short passages of text that are listed,
+as Front-Cover Texts or Back-Cover Texts, in the notice that says that
+the Document is released under this License.  A Front-Cover Text may
+be at most 5 words, and a Back-Cover Text may be at most 25 words.
+
+A \textbf{"Transparent"} copy of the Document means a machine-readable copy,
+represented in a format whose specification is available to the
+general public, that is suitable for revising the document
+straightforwardly with generic text editors or (for images composed of
+pixels) generic paint programs or (for drawings) some widely available
+drawing editor, and that is suitable for input to text formatters or
+for automatic translation to a variety of formats suitable for input
+to text formatters.  A copy made in an otherwise Transparent file
+format whose markup, or absence of markup, has been arranged to thwart
+or discourage subsequent modification by readers is not Transparent.
+An image format is not Transparent if used for any substantial amount
+of text.  A copy that is not "Transparent" is called \textbf{"Opaque"}.
+
+Examples of suitable formats for Transparent copies include plain
+ASCII without markup, Texinfo input format, LaTeX input format, SGML
+or XML using a publicly available DTD, and standard-conforming simple
+HTML, PostScript or PDF designed for human modification.  Examples of
+transparent image formats include PNG, XCF and JPG.  Opaque formats
+include proprietary formats that can be read and edited only by
+proprietary word processors, SGML or XML for which the DTD and/or
+processing tools are not generally available, and the
+machine-generated HTML, PostScript or PDF produced by some word
+processors for output purposes only.
+
+The \textbf{"Title Page"} means, for a printed book, the title page itself,
+plus such following pages as are needed to hold, legibly, the material
+this License requires to appear in the title page.  For works in
+formats which do not have any title page as such, "Title Page" means
+the text near the most prominent appearance of the work's title,
+preceding the beginning of the body of the text.
+
+A section \textbf{"Entitled XYZ"} means a named subunit of the Document whose
+title either is precisely XYZ or contains XYZ in parentheses following
+text that translates XYZ in another language.  (Here XYZ stands for a
+specific section name mentioned below, such as \textbf{"Acknowledgements"},
+\textbf{"Dedications"}, \textbf{"Endorsements"}, or \textbf{"History"}.)  
+To \textbf{"Preserve the Title"}
+of such a section when you modify the Document means that it remains a
+section "Entitled XYZ" according to this definition.
+
+The Document may include Warranty Disclaimers next to the notice which
+states that this License applies to the Document.  These Warranty
+Disclaimers are considered to be included by reference in this
+License, but only as regards disclaiming warranties: any other
+implication that these Warranty Disclaimers may have is void and has
+no effect on the meaning of this License.
+
+
+\begin{center}
+{\Large\bf 2. VERBATIM COPYING}
+\addcontentsline{toc}{section}{2. VERBATIM COPYING}
+\end{center}
+
+You may copy and distribute the Document in any medium, either
+commercially or noncommercially, provided that this License, the
+copyright notices, and the license notice saying this License applies
+to the Document are reproduced in all copies, and that you add no other
+conditions whatsoever to those of this License.  You may not use
+technical measures to obstruct or control the reading or further
+copying of the copies you make or distribute.  However, you may accept
+compensation in exchange for copies.  If you distribute a large enough
+number of copies you must also follow the conditions in section 3.
+
+You may also lend copies, under the same conditions stated above, and
+you may publicly display copies.
+
+
+\begin{center}
+{\Large\bf 3. COPYING IN QUANTITY}
+\addcontentsline{toc}{section}{3. COPYING IN QUANTITY}
+\end{center}
+
+
+If you publish printed copies (or copies in media that commonly have
+printed covers) of the Document, numbering more than 100, and the
+Document's license notice requires Cover Texts, you must enclose the
+copies in covers that carry, clearly and legibly, all these Cover
+Texts: Front-Cover Texts on the front cover, and Back-Cover Texts on
+the back cover.  Both covers must also clearly and legibly identify
+you as the publisher of these copies.  The front cover must present
+the full title with all words of the title equally prominent and
+visible.  You may add other material on the covers in addition.
+Copying with changes limited to the covers, as long as they preserve
+the title of the Document and satisfy these conditions, can be treated
+as verbatim copying in other respects.
+
+If the required texts for either cover are too voluminous to fit
+legibly, you should put the first ones listed (as many as fit
+reasonably) on the actual cover, and continue the rest onto adjacent
+pages.
+
+If you publish or distribute Opaque copies of the Document numbering
+more than 100, you must either include a machine-readable Transparent
+copy along with each Opaque copy, or state in or with each Opaque copy
+a computer-network location from which the general network-using
+public has access to download using public-standard network protocols
+a complete Transparent copy of the Document, free of added material.
+If you use the latter option, you must take reasonably prudent steps,
+when you begin distribution of Opaque copies in quantity, to ensure
+that this Transparent copy will remain thus accessible at the stated
+location until at least one year after the last time you distribute an
+Opaque copy (directly or through your agents or retailers) of that
+edition to the public.
+
+It is requested, but not required, that you contact the authors of the
+Document well before redistributing any large number of copies, to give
+them a chance to provide you with an updated version of the Document.
+
+
+\begin{center}
+{\Large\bf 4. MODIFICATIONS}
+\addcontentsline{toc}{section}{4. MODIFICATIONS}
+\end{center}
+
+You may copy and distribute a Modified Version of the Document under
+the conditions of sections 2 and 3 above, provided that you release
+the Modified Version under precisely this License, with the Modified
+Version filling the role of the Document, thus licensing distribution
+and modification of the Modified Version to whoever possesses a copy
+of it.  In addition, you must do these things in the Modified Version:
+
+\begin{itemize}
+\item[A.] 
+   Use in the Title Page (and on the covers, if any) a title distinct
+   from that of the Document, and from those of previous versions
+   (which should, if there were any, be listed in the History section
+   of the Document).  You may use the same title as a previous version
+   if the original publisher of that version gives permission.
+   
+\item[B.]
+   List on the Title Page, as authors, one or more persons or entities
+   responsible for authorship of the modifications in the Modified
+   Version, together with at least five of the principal authors of the
+   Document (all of its principal authors, if it has fewer than five),
+   unless they release you from this requirement.
+   
+\item[C.]
+   State on the Title page the name of the publisher of the
+   Modified Version, as the publisher.
+   
+\item[D.]
+   Preserve all the copyright notices of the Document.
+   
+\item[E.]
+   Add an appropriate copyright notice for your modifications
+   adjacent to the other copyright notices.
+   
+\item[F.]
+   Include, immediately after the copyright notices, a license notice
+   giving the public permission to use the Modified Version under the
+   terms of this License, in the form shown in the Addendum below.
+   
+\item[G.]
+   Preserve in that license notice the full lists of Invariant Sections
+   and required Cover Texts given in the Document's license notice.
+   
+\item[H.]
+   Include an unaltered copy of this License.
+   
+\item[I.]
+   Preserve the section Entitled "History", Preserve its Title, and add
+   to it an item stating at least the title, year, new authors, and
+   publisher of the Modified Version as given on the Title Page.  If
+   there is no section Entitled "History" in the Document, create one
+   stating the title, year, authors, and publisher of the Document as
+   given on its Title Page, then add an item describing the Modified
+   Version as stated in the previous sentence.
+   
+\item[J.]
+   Preserve the network location, if any, given in the Document for
+   public access to a Transparent copy of the Document, and likewise
+   the network locations given in the Document for previous versions
+   it was based on.  These may be placed in the "History" section.
+   You may omit a network location for a work that was published at
+   least four years before the Document itself, or if the original
+   publisher of the version it refers to gives permission.
+   
+\item[K.]
+   For any section Entitled "Acknowledgements" or "Dedications",
+   Preserve the Title of the section, and preserve in the section all
+   the substance and tone of each of the contributor acknowledgements
+   and/or dedications given therein.
+   
+\item[L.]
+   Preserve all the Invariant Sections of the Document,
+   unaltered in their text and in their titles.  Section numbers
+   or the equivalent are not considered part of the section titles.
+   
+\item[M.]
+   Delete any section Entitled "Endorsements".  Such a section
+   may not be included in the Modified Version.
+   
+\item[N.]
+   Do not retitle any existing section to be Entitled "Endorsements"
+   or to conflict in title with any Invariant Section.
+   
+\item[O.]
+   Preserve any Warranty Disclaimers.
+\end{itemize}
+
+If the Modified Version includes new front-matter sections or
+appendices that qualify as Secondary Sections and contain no material
+copied from the Document, you may at your option designate some or all
+of these sections as invariant.  To do this, add their titles to the
+list of Invariant Sections in the Modified Version's license notice.
+These titles must be distinct from any other section titles.
+
+You may add a section Entitled "Endorsements", provided it contains
+nothing but endorsements of your Modified Version by various
+parties--for example, statements of peer review or that the text has
+been approved by an organization as the authoritative definition of a
+standard.
+
+You may add a passage of up to five words as a Front-Cover Text, and a
+passage of up to 25 words as a Back-Cover Text, to the end of the list
+of Cover Texts in the Modified Version.  Only one passage of
+Front-Cover Text and one of Back-Cover Text may be added by (or
+through arrangements made by) any one entity.  If the Document already
+includes a cover text for the same cover, previously added by you or
+by arrangement made by the same entity you are acting on behalf of,
+you may not add another; but you may replace the old one, on explicit
+permission from the previous publisher that added the old one.
+
+The author(s) and publisher(s) of the Document do not by this License
+give permission to use their names for publicity for or to assert or
+imply endorsement of any Modified Version.
+
+
+\begin{center}
+{\Large\bf 5. COMBINING DOCUMENTS}
+\addcontentsline{toc}{section}{5. COMBINING DOCUMENTS}
+\end{center}
+
+
+You may combine the Document with other documents released under this
+License, under the terms defined in section 4 above for modified
+versions, provided that you include in the combination all of the
+Invariant Sections of all of the original documents, unmodified, and
+list them all as Invariant Sections of your combined work in its
+license notice, and that you preserve all their Warranty Disclaimers.
+
+The combined work need only contain one copy of this License, and
+multiple identical Invariant Sections may be replaced with a single
+copy.  If there are multiple Invariant Sections with the same name but
+different contents, make the title of each such section unique by
+adding at the end of it, in parentheses, the name of the original
+author or publisher of that section if known, or else a unique number.
+Make the same adjustment to the section titles in the list of
+Invariant Sections in the license notice of the combined work.
+
+In the combination, you must combine any sections Entitled "History"
+in the various original documents, forming one section Entitled
+"History"; likewise combine any sections Entitled "Acknowledgements",
+and any sections Entitled "Dedications".  You must delete all sections
+Entitled "Endorsements".
+
+\begin{center}
+{\Large\bf 6. COLLECTIONS OF DOCUMENTS}
+\addcontentsline{toc}{section}{6. COLLECTIONS OF DOCUMENTS}
+\end{center}
+
+You may make a collection consisting of the Document and other documents
+released under this License, and replace the individual copies of this
+License in the various documents with a single copy that is included in
+the collection, provided that you follow the rules of this License for
+verbatim copying of each of the documents in all other respects.
+
+You may extract a single document from such a collection, and distribute
+it individually under this License, provided you insert a copy of this
+License into the extracted document, and follow this License in all
+other respects regarding verbatim copying of that document.
+
+
+\begin{center}
+{\Large\bf 7. AGGREGATION WITH INDEPENDENT WORKS}
+\addcontentsline{toc}{section}{7. AGGREGATION WITH INDEPENDENT WORKS}
+\end{center}
+
+
+A compilation of the Document or its derivatives with other separate
+and independent documents or works, in or on a volume of a storage or
+distribution medium, is called an "aggregate" if the copyright
+resulting from the compilation is not used to limit the legal rights
+of the compilation's users beyond what the individual works permit.
+When the Document is included in an aggregate, this License does not
+apply to the other works in the aggregate which are not themselves
+derivative works of the Document.
+
+If the Cover Text requirement of section 3 is applicable to these
+copies of the Document, then if the Document is less than one half of
+the entire aggregate, the Document's Cover Texts may be placed on
+covers that bracket the Document within the aggregate, or the
+electronic equivalent of covers if the Document is in electronic form.
+Otherwise they must appear on printed covers that bracket the whole
+aggregate.
+
+
+\begin{center}
+{\Large\bf 8. TRANSLATION}
+\addcontentsline{toc}{section}{8. TRANSLATION}
+\end{center}
+
+
+Translation is considered a kind of modification, so you may
+distribute translations of the Document under the terms of section 4.
+Replacing Invariant Sections with translations requires special
+permission from their copyright holders, but you may include
+translations of some or all Invariant Sections in addition to the
+original versions of these Invariant Sections.  You may include a
+translation of this License, and all the license notices in the
+Document, and any Warranty Disclaimers, provided that you also include
+the original English version of this License and the original versions
+of those notices and disclaimers.  In case of a disagreement between
+the translation and the original version of this License or a notice
+or disclaimer, the original version will prevail.
+
+If a section in the Document is Entitled "Acknowledgements",
+"Dedications", or "History", the requirement (section 4) to Preserve
+its Title (section 1) will typically require changing the actual
+title.
+
+
+\begin{center}
+{\Large\bf 9. TERMINATION}
+\addcontentsline{toc}{section}{9. TERMINATION}
+\end{center}
+
+
+You may not copy, modify, sublicense, or distribute the Document except
+as expressly provided for under this License.  Any other attempt to
+copy, modify, sublicense or distribute the Document is void, and will
+automatically terminate your rights under this License.  However,
+parties who have received copies, or rights, from you under this
+License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+
+\begin{center}
+{\Large\bf 10. FUTURE REVISIONS OF THIS LICENSE}
+\addcontentsline{toc}{section}{10. FUTURE REVISIONS OF THIS LICENSE}
+\end{center}
+
+
+The Free Software Foundation may publish new, revised versions
+of the GNU Free Documentation License from time to time.  Such new
+versions will be similar in spirit to the present version, but may
+differ in detail to address new problems or concerns.  See
+http://www.gnu.org/copyleft/.
+
+Each version of the License is given a distinguishing version number.
+If the Document specifies that a particular numbered version of this
+License "or any later version" applies to it, you have the option of
+following the terms and conditions either of that specified version or
+of any later version that has been published (not as a draft) by the
+Free Software Foundation.  If the Document does not specify a version
+number of this License, you may choose any version ever published (not
+as a draft) by the Free Software Foundation.
+
+
+\begin{center}
+{\Large\bf ADDENDUM: How to use this License for your documents}
+\addcontentsline{toc}{section}{ADDENDUM: How to use this License for your 
documents}
+\end{center}
+
+To use this License in a document you have written, include a copy of
+the License in the document and put the following copyright and
+license notices just after the title page:
+
+\bigskip
+\begin{quote}
+    Copyright \copyright  YEAR  YOUR NAME.
+    Permission is granted to copy, distribute and/or modify this document
+    under the terms of the GNU Free Documentation License, Version 1.2
+    or any later version published by the Free Software Foundation;
+    with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts.
+    A copy of the license is included in the section entitled "GNU
+    Free Documentation License".
+\end{quote}
+\bigskip
+    
+If you have Invariant Sections, Front-Cover Texts and Back-Cover Texts,
+replace the "with...Texts." line with this:
+
+\bigskip
+\begin{quote}
+    with the Invariant Sections being LIST THEIR TITLES, with the
+    Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST.
+\end{quote}
+\bigskip
+    
+If you have Invariant Sections without Cover Texts, or some other
+combination of the three, merge those two alternatives to suit the
+situation.
+
+If your document contains nontrivial examples of program code, we
+recommend releasing these examples in parallel under your choice of
+free software license, such as the GNU General Public License,
+to permit their use in free software.
diff -r 2eb768a7ff47 -r ce0f41b2f00a docs/squeezed/fig/calculation.eps
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/squeezed/fig/calculation.eps Tue Dec 15 20:10:58 2009 +0000
@@ -0,0 +1,1362 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: inkscape 0.46
+%%Pages: 1
+%%Orientation: Portrait
+%%BoundingBox: 61 279 561 809
+%%HiResBoundingBox: 61.329681 279.86406 560.8 808.03403
+%%EndComments
+%%Page: 1 1
+0 842 translate
+0.8 -0.8 scale
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+gsave [1 0 0 1 0 0] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+169.93759 173.56965 moveto
+169.93759 43.569649 lineto
+stroke
+gsave [-2.4492127e-17 0.4 -0.4 -2.4492127e-17 169.93759 47.569649] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+gsave [1 0 0 -1 180 192.36218] concat
+gsave
+/newlatin1font {findfont dup length dict copy dup /Encoding ISOLatin1Encoding 
put definefont} def
+/BitstreamVeraSans-Roman-ISOLatin1 /BitstreamVeraSans-Roman newlatin1font
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 1) show
+grestore
+grestore
+gsave [1 0 0 -1 250 192.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 2) show
+grestore
+grestore
+gsave [1 0 0 -1 400 192.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(host) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+170 172.36218 moveto
+460 172.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+200 112.36218 moveto
+210 112.36218 lineto
+210 122.36218 lineto
+200 122.36218 lineto
+200 112.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+160 62.362183 moveto
+170 62.362183 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+160 142.36218 moveto
+170 142.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+270 112.36218 moveto
+280 112.36218 lineto
+280 122.36218 lineto
+270 122.36218 lineto
+270 112.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+340 62.362183 moveto
+350 62.362183 lineto
+350 72.362183 lineto
+340 72.362183 lineto
+340 62.362183 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+410 122.36218 moveto
+420 122.36218 lineto
+420 132.36218 lineto
+410 132.36218 lineto
+410 122.36218 lineto
+closepath
+stroke
+gsave [1 0 0 -1 320 192.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 3) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+430 152.36218 moveto
+440 152.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+435 152.36218 moveto
+435 132.36218 lineto
+stroke
+gsave [1 0 0 -1 445 162.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(s) show
+grestore
+grestore
+gsave [1 0 0 -1 445 147.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(x) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+435 172.36218 moveto
+435 152.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.4014522 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+300 142.36218 moveto
+300 122.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+230 142.36218 moveto
+230 122.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+295 142.36218 moveto
+305 142.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+225 142.36218 moveto
+235 142.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+360 142.36218 moveto
+370 142.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+365 72.362186 moveto
+365 142.36218 lineto
+stroke
+gsave [1 0 0 -1 235 137.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(d1) show
+grestore
+grestore
+gsave [1 0 0 -1 305 137.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(d2) show
+grestore
+grestore
+gsave [1 0 0 -1 370 137.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(d3) show
+grestore
+grestore
+gsave [1 0 0 -1 76 65.362183] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(dynamic max) show
+grestore
+grestore
+gsave [1 0 0 -1 78 145.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(dynamic min) show
+grestore
+grestore
+gsave [1 0 0 -1 500 72.362183] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(s = host "slush fund") show
+grestore
+grestore
+gsave [1 0 0 -1 500 87.362183] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(x = unallocated memory) show
+grestore
+grestore
+gsave [1 0 0 -1 500 102.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(d1 = totpages' - dynamic min) show
+grestore
+grestore
+gsave [1 0 0 -1 500 117.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(d2 = totpages' - dynamic min) show
+grestore
+grestore
+gsave [1 0 0 -1 500 132.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(d3 = totpages' - dynamic min) show
+grestore
+grestore
+gsave [1 0 0 -1 500 147.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(g = amount "given back" to) show
+grestore
+grestore
+gsave [1 0 0 -1 500 162.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(       each guest \(depends on) show
+grestore
+grestore
+gsave [1 0 0 -1 500 177.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(       policy\)) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+169.93759 422.36218 moveto
+169.93759 292.36218 lineto
+stroke
+gsave [-2.4492127e-17 0.4 -0.4 -2.4492127e-17 169.93759 296.36218] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+gsave [1 0 0 -1 180 441.15472] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 1) show
+grestore
+grestore
+gsave [1 0 0 -1 250 441.15472] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 2) show
+grestore
+grestore
+gsave [1 0 0 -1 400 441.15472] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(host) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+170 421.15471 moveto
+460 421.15471 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+200 361.15472 moveto
+210 361.15472 lineto
+210 371.15472 lineto
+200 371.15472 lineto
+200 361.15472 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+160 311.15471 moveto
+170 311.15471 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+160 391.15471 moveto
+170 391.15471 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+270 361.15472 moveto
+280 361.15472 lineto
+280 371.15472 lineto
+270 371.15472 lineto
+270 361.15472 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+340 311.15472 moveto
+350 311.15472 lineto
+350 321.15472 lineto
+340 321.15472 lineto
+340 311.15472 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+410 371.15472 moveto
+420 371.15472 lineto
+420 381.15472 lineto
+410 381.15472 lineto
+410 371.15472 lineto
+closepath
+stroke
+gsave [1 0 0 -1 320 441.15472] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 3) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+430.00001 401.15472 moveto
+440.00001 401.15472 lineto
+stroke
+gsave [1 0 0 -1 440 411.15472] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(s) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+435.00001 421.15472 moveto
+435.00001 401.15472 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+225.00001 391.15472 moveto
+235.00001 391.15472 lineto
+stroke
+gsave [1 0 0 -1 235.00002 366.15472] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(g) show
+grestore
+grestore
+gsave [1 0 0 -1 76 314.15472] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(dynamic max) show
+grestore
+grestore
+gsave [1 0 0 -1 78 394.15472] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(dynamic min) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+230.00001 391.15472 moveto
+230.00001 336.15472 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+205.00001 361.15472 moveto
+205.00001 336.15472 lineto
+stroke
+gsave [-2.4492127e-17 0.4 -0.4 -2.4492127e-17 205.00001 340.15472] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+225.00001 336.15472 moveto
+235.00001 336.15472 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+295.00001 391.15473 moveto
+305.00001 391.15473 lineto
+stroke
+gsave [1 0 0 -1 305 366.15472] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(g) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+300.00001 391.15473 moveto
+300.00001 336.15473 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+295.00001 336.15473 moveto
+305.00001 336.15473 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+360.00001 391.15472 moveto
+370.00001 391.15472 lineto
+stroke
+gsave [1 0 0 -1 370 366.15475] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(g) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+365.00001 391.15472 moveto
+365.00001 336.15472 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+360.00001 336.15472 moveto
+370.00001 336.15472 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+275.00001 361.15472 moveto
+275.00001 336.15472 lineto
+stroke
+gsave [-2.4492127e-17 0.4 -0.4 -2.4492127e-17 275.00001 340.15472] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+345.00001 320.40472 moveto
+345.00001 336.15472 lineto
+stroke
+gsave [-2.4492127e-17 -0.4 0.4 -2.4492127e-17 345.00001 332.15472] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+415.00001 381.15472 moveto
+415.00001 401.15472 lineto
+stroke
+gsave [-2.4492127e-17 -0.4 0.4 -2.4492127e-17 415.00001 397.15472] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+169.93758 683.56963 moveto
+169.93758 553.56963 lineto
+stroke
+gsave [-2.4492127e-17 0.4 -0.4 -2.4492127e-17 169.93758 557.56963] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+gsave [1 0 0 -1 179.99998 702.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 1) show
+grestore
+grestore
+gsave [1 0 0 -1 249.99998 702.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 2) show
+grestore
+grestore
+gsave [1 0 0 -1 400 702.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(host) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+169.99999 682.36216 moveto
+459.99999 682.36216 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+200 587.36218 moveto
+210 587.36218 lineto
+210 597.36218 lineto
+200 597.36218 lineto
+200 587.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+159.99999 572.36216 moveto
+169.99999 572.36216 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+159.99999 652.36216 moveto
+169.99999 652.36216 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+270 587.36218 moveto
+280 587.36218 lineto
+280 597.36218 lineto
+270 597.36218 lineto
+270 587.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+340 587.36218 moveto
+350 587.36218 lineto
+350 597.36218 lineto
+340 597.36218 lineto
+340 587.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+410 652.36218 moveto
+420 652.36218 lineto
+420 662.36218 lineto
+410 662.36218 lineto
+410 652.36218 lineto
+closepath
+stroke
+gsave [1 0 0 -1 320 702.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 3) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+429.99999 662.36216 moveto
+439.99999 662.36216 lineto
+stroke
+gsave [1 0 0 -1 445 672.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(s) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+434.99999 682.36216 moveto
+434.99999 662.36216 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+225 652.36217 moveto
+235 652.36217 lineto
+stroke
+gsave [1 0 0 -1 235 627.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(g) show
+grestore
+grestore
+gsave [1 0 0 -1 75.999992 575.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(dynamic max) show
+grestore
+grestore
+gsave [1 0 0 -1 77.999992 655.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(dynamic min) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+230 652.36217 moveto
+230 597.36217 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+225 597.36217 moveto
+235 597.36217 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+295 652.36218 moveto
+305 652.36218 lineto
+stroke
+gsave [1 0 0 -1 305 627.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(g) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+300 652.36218 moveto
+300 597.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+295 597.36218 moveto
+305 597.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+360 652.36217 moveto
+370 652.36217 lineto
+stroke
+gsave [1 0 0 -1 370 627.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(g) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+365 652.36217 moveto
+365 597.36217 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+360 597.36217 moveto
+370 597.36217 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+225 122.36218 moveto
+235 122.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+295 122.36218 moveto
+305 122.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.3858793 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+360 72.362183 moveto
+370 72.362183 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+0.71969843 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+430 132.36218 moveto
+440 132.36218 lineto
+stroke
+gsave [1 0 0 -1 300 232.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(compute ideal target values) show
+grestore
+grestore
+gsave [1 0 0 -1 300 247.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(based on policy) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+2 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+280 212.36218 moveto
+280 272.36218 lineto
+stroke
+gsave [-4.8984254e-17 -0.8 0.8 -4.8984254e-17 280 264.36218] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+gsave [1 0 0 -1 300 492.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(post-execution state) show
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+2 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+280 472.36218 moveto
+280 532.36218 lineto
+stroke
+gsave [-4.8984254e-17 -0.8 0.8 -4.8984254e-17 280 524.36218] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+2 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+490 52.362183 moveto
+700 52.362183 lineto
+700 192.36218 lineto
+490 192.36218 lineto
+490 52.362183 lineto
+closepath
+stroke
+grestore
+showpage
+%%EOF
diff -r 2eb768a7ff47 -r ce0f41b2f00a docs/squeezed/fig/calculation.pdf
Binary file docs/squeezed/fig/calculation.pdf has changed
diff -r 2eb768a7ff47 -r ce0f41b2f00a docs/squeezed/fig/calculation.svg
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/squeezed/fig/calculation.svg Tue Dec 15 20:10:58 2009 +0000
@@ -0,0 +1,824 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="calculation.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path3178"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;">
+      <path
+         id="path3175"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path3181"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.1980992"
+     inkscape:cx="523.40491"
+     inkscape:cy="679.93631"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1270"
+     inkscape:window-height="995"
+     inkscape:window-x="93"
+     inkscape:window-y="25">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2383"
+       dotted="true"
+       visible="true"
+       enabled="true"
+       spacingx="1px"
+       spacingy="1px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <path
+       sodipodi:nodetypes="cc"
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 169.93759,173.56965 L 169.93759,43.569649"
+       id="path2385" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="180"
+       y="192.36218"
+       id="text2387"><tspan
+         sodipodi:role="line"
+         id="tspan2389"
+         x="180"
+         y="192.36218">domain 1</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="250"
+       y="192.36218"
+       id="text2391"><tspan
+         sodipodi:role="line"
+         id="tspan2393"
+         x="250"
+         y="192.36218">domain 2</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="400"
+       y="192.36218"
+       id="text2395"><tspan
+         sodipodi:role="line"
+         id="tspan2397"
+         x="400"
+         y="192.36218">host</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 170,172.36218 L 460,172.36218"
+       id="path4991"
+       sodipodi:nodetypes="cc" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5071"
+       width="10"
+       height="10"
+       x="200"
+       y="112.36218" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 160,62.362183 L 170,62.362183"
+       id="path2483" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 160,142.36218 L 170,142.36218"
+       id="path2485" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2502"
+       width="10"
+       height="10"
+       x="270"
+       y="112.36218" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2504"
+       width="10"
+       height="10"
+       x="340"
+       y="62.362183" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect2506"
+       width="10"
+       height="10"
+       x="410"
+       y="122.36218" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="320"
+       y="192.36218"
+       id="text2508"><tspan
+         sodipodi:role="line"
+         id="tspan2510"
+         x="320"
+         y="192.36218">domain 3</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 430,152.36218 L 440,152.36218"
+       id="path4356" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:none;stroke-opacity:1"
+       d="M 435,152.36218 L 435,132.36218"
+       id="path4358" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="445"
+       y="162.36218"
+       id="text4360"><tspan
+         sodipodi:role="line"
+         id="tspan4362"
+         x="445"
+         y="162.36218">s</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="445"
+       y="147.36218"
+       id="text4364"><tspan
+         sodipodi:role="line"
+         id="tspan4366"
+         x="445"
+         y="147.36218">x</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:none;stroke-opacity:1"
+       d="M 435,172.36218 L 435,152.36218"
+       id="path5426" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.40145218px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:none;stroke-opacity:1"
+       d="M 300,142.36218 L 300,122.36218"
+       id="path5428" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:none;stroke-opacity:1"
+       d="M 230,142.36218 L 230,122.36218"
+       id="path5430" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 295,142.36218 L 305,142.36218"
+       id="path5432" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 225,142.36218 L 235,142.36218"
+       id="path5434" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 360,142.36218 L 370,142.36218"
+       id="path5436" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 365,72.362186 L 365,142.36218"
+       id="path5438" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="235"
+       y="137.36218"
+       id="text5440"><tspan
+         sodipodi:role="line"
+         id="tspan5442"
+         x="235"
+         y="137.36218">d1</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="305"
+       y="137.36218"
+       id="text5444"><tspan
+         sodipodi:role="line"
+         id="tspan5446"
+         x="305"
+         y="137.36218">d2</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="370"
+       y="137.36218"
+       id="text5448"><tspan
+         sodipodi:role="line"
+         id="tspan5450"
+         x="370"
+         y="137.36218">d3</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="76"
+       y="65.362183"
+       id="text5452"><tspan
+         sodipodi:role="line"
+         id="tspan5454"
+         x="76"
+         y="65.362183"
+         style="font-size:12px">dynamic max</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="78"
+       y="145.36218"
+       id="text5456"><tspan
+         sodipodi:role="line"
+         id="tspan5458"
+         x="78"
+         y="145.36218"
+         style="font-size:12px">dynamic min</tspan></text>
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot5460"
+       
style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Bitstream
 Vera Sans;font-style:normal;font-weight:normal;font-size:12"><flowRegion
+         id="flowRegion5462"><rect
+           id="rect5464"
+           width="24.583742"
+           height="115.6882"
+           x="190.4035"
+           y="27.075485" /></flowRegion><flowPara
+         id="flowPara5466"></flowPara></flowRoot>    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="500"
+       y="72.362183"
+       id="text5468"><tspan
+         sodipodi:role="line"
+         id="tspan5470"
+         x="500"
+         y="72.362183">s = host &quot;slush fund&quot;</tspan><tspan
+         sodipodi:role="line"
+         x="500"
+         y="87.362183"
+         id="tspan5472">x = unallocated memory</tspan><tspan
+         sodipodi:role="line"
+         x="500"
+         y="102.36218"
+         id="tspan6754">d1 = totpages' - dynamic min</tspan><tspan
+         sodipodi:role="line"
+         x="500"
+         y="117.36218"
+         id="tspan6756">d2 = totpages' - dynamic min</tspan><tspan
+         sodipodi:role="line"
+         x="500"
+         y="132.36218"
+         id="tspan6758">d3 = totpages' - dynamic min</tspan><tspan
+         sodipodi:role="line"
+         x="500"
+         y="147.36218"
+         id="tspan7356">g = amount &quot;given back&quot; to</tspan><tspan
+         sodipodi:role="line"
+         x="500"
+         y="162.36218"
+         id="tspan7358">       each guest (depends on</tspan><tspan
+         sodipodi:role="line"
+         x="500"
+         y="177.36218"
+         id="tspan7364">       policy)</tspan><tspan
+         sodipodi:role="line"
+         x="500"
+         y="192.36218"
+         id="tspan5474" /></text>
+    <path
+       sodipodi:nodetypes="cc"
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 169.93759,422.36218 L 169.93759,292.36218"
+       id="path5482" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="180"
+       y="441.15472"
+       id="text5484"><tspan
+         sodipodi:role="line"
+         id="tspan5486"
+         x="180"
+         y="441.15472">domain 1</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="250"
+       y="441.15472"
+       id="text5488"><tspan
+         sodipodi:role="line"
+         id="tspan5490"
+         x="250"
+         y="441.15472">domain 2</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="400"
+       y="441.15472"
+       id="text5492"><tspan
+         sodipodi:role="line"
+         id="tspan5494"
+         x="400"
+         y="441.15472">host</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 170,421.15471 L 460,421.15471"
+       id="path5496"
+       sodipodi:nodetypes="cc" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5498"
+       width="10"
+       height="10"
+       x="200"
+       y="361.15472" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 160,311.15471 L 170,311.15471"
+       id="path5500" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 160,391.15471 L 170,391.15471"
+       id="path5502" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5504"
+       width="10"
+       height="10"
+       x="270"
+       y="361.15472" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5506"
+       width="10"
+       height="10"
+       x="340"
+       y="311.15472" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5508"
+       width="10"
+       height="10"
+       x="410"
+       y="371.15472" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="320"
+       y="441.15472"
+       id="text5510"><tspan
+         sodipodi:role="line"
+         id="tspan5512"
+         x="320"
+         y="441.15472">domain 3</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 430.00001,401.15472 L 440.00001,401.15472"
+       id="path5514" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="440"
+       y="411.15472"
+       id="text5518"><tspan
+         sodipodi:role="line"
+         id="tspan5520"
+         x="440"
+         y="411.15472">s</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:none;stroke-opacity:1"
+       d="M 435.00001,421.15472 L 435.00001,401.15472"
+       id="path5526" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 225.00001,391.15472 L 235.00001,391.15472"
+       id="path5534" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="235.00002"
+       y="366.15472"
+       id="text5540"><tspan
+         sodipodi:role="line"
+         id="tspan5542"
+         x="235.00002"
+         y="366.15472">g</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="76"
+       y="314.15472"
+       id="text5552"><tspan
+         sodipodi:role="line"
+         id="tspan5554"
+         x="76"
+         y="314.15472"
+         style="font-size:12px">dynamic max</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="78"
+       y="394.15472"
+       id="text5556"><tspan
+         sodipodi:role="line"
+         id="tspan5558"
+         x="78"
+         y="394.15472"
+         style="font-size:12px">dynamic min</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 230.00001,391.15472 L 230.00001,336.15472"
+       id="path5560" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 205.00001,361.15472 L 205.00001,336.15472"
+       id="path5562" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 225.00001,336.15472 L 235.00001,336.15472"
+       id="path6091" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 295.00001,391.15473 L 305.00001,391.15473"
+       id="path6093" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="305"
+       y="366.15472"
+       id="text6095"><tspan
+         sodipodi:role="line"
+         id="tspan6097"
+         x="305"
+         y="366.15472">g</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 300.00001,391.15473 L 300.00001,336.15473"
+       id="path6099" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 295.00001,336.15473 L 305.00001,336.15473"
+       id="path6101" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 360.00001,391.15472 L 370.00001,391.15472"
+       id="path6103" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="370"
+       y="366.15475"
+       id="text6105"><tspan
+         sodipodi:role="line"
+         id="tspan6107"
+         x="370"
+         y="366.15475">g</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 365.00001,391.15472 L 365.00001,336.15472"
+       id="path6109" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 360.00001,336.15472 L 370.00001,336.15472"
+       id="path6111" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 275.00001,361.15472 L 275.00001,336.15472"
+       id="path6113" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 345.00001,320.40472 L 345.00001,336.15472"
+       id="path6115"
+       sodipodi:nodetypes="cc" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 415.00001,381.15472 L 415.00001,401.15472"
+       id="path6117" />
+    <path
+       sodipodi:nodetypes="cc"
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 169.93758,683.56963 L 169.93758,553.56963"
+       id="path6646" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="179.99998"
+       y="702.36218"
+       id="text6648"><tspan
+         sodipodi:role="line"
+         id="tspan6650"
+         x="179.99998"
+         y="702.36218">domain 1</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="249.99998"
+       y="702.36218"
+       id="text6652"><tspan
+         sodipodi:role="line"
+         id="tspan6654"
+         x="249.99998"
+         y="702.36218">domain 2</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="400"
+       y="702.36218"
+       id="text6656"><tspan
+         sodipodi:role="line"
+         id="tspan6658"
+         x="400"
+         y="702.36218">host</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 169.99999,682.36216 L 459.99999,682.36216"
+       id="path6660"
+       sodipodi:nodetypes="cc" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6662"
+       width="10"
+       height="10"
+       x="200"
+       y="587.36218" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 159.99999,572.36216 L 169.99999,572.36216"
+       id="path6664" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 159.99999,652.36216 L 169.99999,652.36216"
+       id="path6666" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6668"
+       width="10"
+       height="10"
+       x="270"
+       y="587.36218" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6670"
+       width="10"
+       height="10"
+       x="340"
+       y="587.36218" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect6672"
+       width="10"
+       height="10"
+       x="410"
+       y="652.36218" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="320"
+       y="702.36218"
+       id="text6674"><tspan
+         sodipodi:role="line"
+         id="tspan6676"
+         x="320"
+         y="702.36218">domain 3</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 429.99999,662.36216 L 439.99999,662.36216"
+       id="path6678" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="445"
+       y="672.36218"
+       id="text6680"><tspan
+         sodipodi:role="line"
+         id="tspan6682"
+         x="445"
+         y="672.36218">s</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:none;stroke-opacity:1"
+       d="M 434.99999,682.36216 L 434.99999,662.36216"
+       id="path6684" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 225,652.36217 L 235,652.36217"
+       id="path6686" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="235"
+       y="627.36218"
+       id="text6688"><tspan
+         sodipodi:role="line"
+         id="tspan6690"
+         x="235"
+         y="627.36218">g</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="75.999992"
+       y="575.36218"
+       id="text6692"><tspan
+         sodipodi:role="line"
+         id="tspan6694"
+         x="75.999992"
+         y="575.36218"
+         style="font-size:12px">dynamic max</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="77.999992"
+       y="655.36218"
+       id="text6696"><tspan
+         sodipodi:role="line"
+         id="tspan6698"
+         x="77.999992"
+         y="655.36218"
+         style="font-size:12px">dynamic min</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 230,652.36217 L 230,597.36217"
+       id="path6700" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 225,597.36217 L 235,597.36217"
+       id="path6704" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 295,652.36218 L 305,652.36218"
+       id="path6706" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="305"
+       y="627.36218"
+       id="text6708"><tspan
+         sodipodi:role="line"
+         id="tspan6710"
+         x="305"
+         y="627.36218">g</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 300,652.36218 L 300,597.36218"
+       id="path6712" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 295,597.36218 L 305,597.36218"
+       id="path6714" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 360,652.36217 L 370,652.36217"
+       id="path6716" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="370"
+       y="627.36218"
+       id="text6718"><tspan
+         sodipodi:role="line"
+         id="tspan6720"
+         x="370"
+         y="627.36218">g</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 365,652.36217 L 365,597.36217"
+       id="path6722" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 360,597.36217 L 370,597.36217"
+       id="path6724" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 225,122.36218 L 235,122.36218"
+       id="path6732" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 295,122.36218 L 305,122.36218"
+       id="path6734" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.38587928px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 360,72.362183 L 370,72.362183"
+       id="path6736" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.71969843px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 430,132.36218 L 440,132.36218"
+       id="path6738" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="300"
+       y="232.36218"
+       id="text6791"><tspan
+         sodipodi:role="line"
+         id="tspan6793"
+         x="300"
+         y="232.36218">compute ideal target values</tspan><tspan
+         sodipodi:role="line"
+         x="300"
+         y="247.36218"
+         id="tspan6795">based on policy</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;marker-end:url(#Arrow1Mend)"
+       d="M 280,212.36218 L 280,272.36218"
+       id="path6797" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="300"
+       y="492.36218"
+       id="text7346"><tspan
+         sodipodi:role="line"
+         x="300"
+         y="492.36218"
+         id="tspan7350">post-execution state</tspan></text>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 280,472.36218 L 280,532.36218"
+       id="path7352" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="499.95862"
+       y="331.21988"
+       id="text7360"><tspan
+         sodipodi:role="line"
+         id="tspan7362"
+         x="499.95862"
+         y="331.21988" /></text>
+    <rect
+       
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7386"
+       width="210"
+       height="140"
+       x="490"
+       y="52.362183" />
+  </g>
+</svg>
diff -r 2eb768a7ff47 -r ce0f41b2f00a docs/squeezed/fig/twophase.eps
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/squeezed/fig/twophase.eps    Tue Dec 15 20:10:58 2009 +0000
@@ -0,0 +1,977 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: inkscape 0.46
+%%Pages: 1
+%%Orientation: Portrait
+%%BoundingBox: 34 342 486 801
+%%HiResBoundingBox: 34.573505 342.8981 485.82656 801
+%%EndComments
+%%Page: 1 1
+0 842 translate
+0.8 -0.8 scale
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+gsave [1 0 0 1 0 0] concat
+gsave [1 0 0 1 160 0] concat
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+60 152.36218 moveto
+60 52.362183 lineto
+stroke
+gsave [-2.4492127e-17 0.4 -0.4 -2.4492127e-17 60 56.362183] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+gsave [1 0 0 -1 70 172.36218] concat
+gsave
+/newlatin1font {findfont dup length dict copy dup /Encoding ISOLatin1Encoding 
put definefont} def
+/BitstreamVeraSans-Roman-ISOLatin1 /BitstreamVeraSans-Roman newlatin1font
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 1) show
+grestore
+grestore
+gsave [1 0 0 -1 150 172.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 2) show
+grestore
+grestore
+gsave [1 0 0 -1 230 172.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(host) show
+grestore
+grestore
+gsave [0 -1 1 0 0 0] concat
+gsave [1 0 0 -1 -122.36218 50] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(memory) show
+grestore
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+90 92.362183 moveto
+100 92.362183 lineto
+100 102.36218 lineto
+90 102.36218 lineto
+90 92.362183 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+95 102.36218 moveto
+95 122.36218 lineto
+stroke
+gsave [-2.4492127e-17 -0.4 0.4 -2.4492127e-17 95 118.36218] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+170 92.362183 moveto
+180 92.362183 lineto
+180 102.36218 lineto
+170 102.36218 lineto
+170 92.362183 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+175 92.362183 moveto
+175 72.362183 lineto
+stroke
+gsave [-2.4492127e-17 0.4 -0.4 -2.4492127e-17 175 76.362183] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+60 152.36218 moveto
+275 152.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+240.06241 121.15472 moveto
+250.06241 121.15472 lineto
+250.06241 131.15472 lineto
+240.06241 131.15472 lineto
+240.06241 121.15472 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+59.937585 373.56965 moveto
+59.937585 273.56965 lineto
+stroke
+gsave [-2.4492127e-17 0.4 -0.4 -2.4492127e-17 59.937585 277.56965] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+gsave [1 0 0 -1 69.937584 393.56964] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 1) show
+grestore
+grestore
+gsave [1 0 0 -1 149.93759 393.56964] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 2) show
+grestore
+grestore
+gsave [1 0 0 -1 229.93759 393.56964] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(host) show
+grestore
+grestore
+gsave [0 -1 1 0 0 0] concat
+gsave [1 0 0 -1 -343.56964 49.937584] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(memory) show
+grestore
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+90 337.36218 moveto
+100 337.36218 lineto
+100 347.36218 lineto
+90 347.36218 lineto
+90 337.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+169.93759 313.56964 moveto
+179.93759 313.56964 lineto
+179.93759 323.56964 lineto
+169.93759 323.56964 lineto
+169.93759 313.56964 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+174.93758 313.56965 moveto
+174.93758 293.56965 lineto
+stroke
+gsave [-2.4492127e-17 0.4 -0.4 -2.4492127e-17 174.93758 297.56965] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+59.937585 373.56965 moveto
+274.93758 373.56965 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+240 322.36218 moveto
+250 322.36218 lineto
+250 332.36218 lineto
+240 332.36218 lineto
+240 322.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+359.99998 372.36218 moveto
+359.99998 272.36219 lineto
+stroke
+gsave [-2.4492127e-17 0.4 -0.4 -2.4492127e-17 359.99998 276.36219] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+gsave [1 0 0 -1 370 392.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 1) show
+grestore
+grestore
+gsave [1 0 0 -1 450 392.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 2) show
+grestore
+grestore
+gsave [1 0 0 -1 530 392.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(host) show
+grestore
+grestore
+gsave [0 -1 1 0 0 0] concat
+gsave [1 0 0 -1 -342.36218 350] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(memory) show
+grestore
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+390 312.36218 moveto
+400 312.36218 lineto
+400 322.36218 lineto
+390 322.36218 lineto
+390 312.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+394.99998 322.36218 moveto
+394.99998 342.36218 lineto
+stroke
+gsave [-2.4492127e-17 -0.4 0.4 -2.4492127e-17 394.99998 338.36218] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+470 287.36218 moveto
+480 287.36218 lineto
+480 297.36218 lineto
+470 297.36218 lineto
+470 287.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+359.99998 372.36218 moveto
+574.99998 372.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+540 362.36218 moveto
+550 362.36218 lineto
+550 372.36218 lineto
+540 372.36218 lineto
+540 362.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+219.9376 603.56966 moveto
+219.9376 503.56966 lineto
+stroke
+gsave [-2.4492127e-17 0.4 -0.4 -2.4492127e-17 219.9376 507.56966] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+gsave [1 0 0 -1 229.93759 623.56964] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 1) show
+grestore
+grestore
+gsave [1 0 0 -1 309.93759 623.56964] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(domain 2) show
+grestore
+grestore
+gsave [1 0 0 -1 389.93759 623.56964] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(host) show
+grestore
+grestore
+gsave [0 -1 1 0 0 0] concat
+gsave [1 0 0 -1 -573.5697 209.93759] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+(memory) show
+grestore
+grestore
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+250 567.36218 moveto
+260 567.36218 lineto
+260 577.36218 lineto
+250 577.36218 lineto
+250 567.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+330 517.36218 moveto
+340 517.36218 lineto
+340 527.36218 lineto
+330 527.36218 lineto
+330 517.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+219.9376 603.56966 moveto
+434.9376 603.56966 lineto
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+1.0001 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+400 572.36218 moveto
+410 572.36218 lineto
+410 582.36218 lineto
+400 582.36218 lineto
+400 572.36218 lineto
+closepath
+stroke
+0 0 0 setrgbcolor
+[] 0 setdash
+2 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+260 192.36218 moveto
+200 272.36218 lineto
+stroke
+gsave [0.48 -0.64 0.64 0.48 204.8 265.96218] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+2 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+390 192.36218 moveto
+450 272.36218 lineto
+stroke
+gsave [-0.48 -0.64 0.64 -0.48 445.2 265.96218] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+2 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+260 492.36218 moveto
+200 412.36218 lineto
+stroke
+gsave [-0.48 -0.64 0.64 -0.48 255.2 485.96218] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+2 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+390 492.36218 moveto
+450 412.36218 lineto
+stroke
+gsave [0.48 -0.64 0.64 0.48 394.8 485.96218] concat
+gsave
+0 0 0 setrgbcolor
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+eofill
+grestore
+0 0 0 setrgbcolor
+[] 0 setdash
+1.25 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+5 -5 lineto
+-12.5 0 lineto
+5 5 lineto
+0 0 lineto
+closepath
+stroke
+grestore
+0 0 0 setrgbcolor
+[0.5 1] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+255 97.362183 moveto
+335 97.362183 lineto
+stroke
+0 0 0 setrgbcolor
+[0.5 1] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+255 72.362183 moveto
+335 72.362183 lineto
+stroke
+0 0 0 setrgbcolor
+[0.5 1] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+255 122.36218 moveto
+335 122.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[0.5 1] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+95.000003 317.36219 moveto
+175 317.36219 lineto
+stroke
+0 0 0 setrgbcolor
+[0.5 1] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+95.000003 292.36219 moveto
+175 292.36219 lineto
+stroke
+0 0 0 setrgbcolor
+[0.5 1] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+95.000003 342.36218 moveto
+175 342.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[0.5 1] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+395 317.36219 moveto
+475 317.36219 lineto
+stroke
+0 0 0 setrgbcolor
+[0.5 1] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+395 292.36219 moveto
+475 292.36219 lineto
+stroke
+0 0 0 setrgbcolor
+[0.5 1] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+395 342.36218 moveto
+475 342.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[0.5 1] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+255 547.36218 moveto
+335 547.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[0.5 1] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+255 522.36218 moveto
+335 522.36218 lineto
+stroke
+0 0 0 setrgbcolor
+[0.5 1] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+255 572.36218 moveto
+335 572.36218 lineto
+stroke
+1 0.34117648 0.36078432 setrgbcolor
+[] 0 setdash
+2 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+520 342.36218 moveto
+570 342.36218 lineto
+570 412.36218 lineto
+520 412.36218 lineto
+520 342.36218 lineto
+closepath
+stroke
+gsave [1 0 0 -1 500 442.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+1 0.34117648 0.36078432 setrgbcolor
+newpath
+0 0 moveto
+(host free memory) show
+1 0.34117648 0.36078432 setrgbcolor
+[] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+(host free memory) false charpath stroke
+grestore
+grestore
+gsave [1 0 0 -1 500 457.36218] concat
+gsave
+/BitstreamVeraSans-Roman-ISOLatin1 findfont
+12 scalefont
+setfont
+1 0.34117648 0.36078432 setrgbcolor
+newpath
+0 0 moveto
+(has run out) show
+1 0.34117648 0.36078432 setrgbcolor
+[] 0 setdash
+0.5 setlinewidth
+0 setlinejoin
+0 setlinecap
+newpath
+0 0 moveto
+(has run out) false charpath stroke
+grestore
+grestore
+grestore
+showpage
+%%EOF
diff -r 2eb768a7ff47 -r ce0f41b2f00a docs/squeezed/fig/twophase.pdf
Binary file docs/squeezed/fig/twophase.pdf has changed
diff -r 2eb768a7ff47 -r ce0f41b2f00a docs/squeezed/fig/twophase.svg
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/squeezed/fig/twophase.svg    Tue Dec 15 20:10:58 2009 +0000
@@ -0,0 +1,497 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="744.09448819"
+   height="1052.3622047"
+   id="svg2"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   sodipodi:docname="twophase"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="Arrow1Mstart"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mstart"
+       style="overflow:visible">
+      <path
+         id="path3178"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
+         transform="scale(0.4) translate(10,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;">
+      <path
+         id="path3175"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Mend"
+       style="overflow:visible;">
+      <path
+         id="path3181"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
+         transform="scale(0.4) rotate(180) translate(10,0)" />
+    </marker>
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective10" />
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1.4669225"
+     inkscape:cx="324.85266"
+     inkscape:cy="714.93631"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1299"
+     inkscape:window-height="1044"
+     inkscape:window-x="1333"
+     inkscape:window-y="25">
+    <inkscape:grid
+       type="xygrid"
+       id="grid2383"
+       dotted="true"
+       visible="true"
+       enabled="true"
+       spacingx="1px"
+       spacingy="1px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g5163"
+       transform="translate(160,0)">
+      <path
+         id="path2385"
+         d="M 60,152.36218 L 60,52.362183"
+         
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
 />
+      <text
+         id="text2387"
+         y="172.36218"
+         x="70"
+         
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+         xml:space="preserve"><tspan
+           y="172.36218"
+           x="70"
+           id="tspan2389"
+           sodipodi:role="line">domain 1</tspan></text>
+      <text
+         id="text2391"
+         y="172.36218"
+         x="150"
+         
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+         xml:space="preserve"><tspan
+           y="172.36218"
+           x="150"
+           id="tspan2393"
+           sodipodi:role="line">domain 2</tspan></text>
+      <text
+         id="text2395"
+         y="172.36218"
+         x="230"
+         
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+         xml:space="preserve"><tspan
+           y="172.36218"
+           x="230"
+           id="tspan2397"
+           sodipodi:role="line">host</tspan></text>
+      <text
+         transform="matrix(0,-1,1,0,0,0)"
+         id="text3947"
+         y="50"
+         x="-122.36218"
+         
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+         xml:space="preserve"><tspan
+           y="50"
+           x="-122.36218"
+           id="tspan3949"
+           sodipodi:role="line">memory</tspan></text>
+      <rect
+         y="92.362183"
+         x="90"
+         height="10"
+         width="10"
+         id="rect3953"
+         
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
 />
+      <path
+         id="path3955"
+         d="M 95,102.36218 L 95,122.36218"
+         
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
 />
+      <rect
+         y="92.362183"
+         x="170"
+         height="10"
+         width="10"
+         id="rect4987"
+         
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
 />
+      <path
+         id="path4989"
+         d="M 175,92.362183 L 175,72.362183"
+         
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
 />
+      <path
+         id="path4991"
+         d="M 60,152.36218 L 275,152.36218"
+         
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
 />
+      <rect
+         y="121.15472"
+         x="240.06241"
+         height="10"
+         width="10"
+         id="rect5071"
+         
style="opacity:1;fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
 />
+    </g>
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 59.937585,373.56965 L 59.937585,273.56965"
+       id="path5073" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="69.937584"
+       y="393.56964"
+       id="text5075"><tspan
+         sodipodi:role="line"
+         id="tspan5077"
+         x="69.937584"
+         y="393.56964">domain 1</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="149.93759"
+       y="393.56964"
+       id="text5079"><tspan
+         sodipodi:role="line"
+         id="tspan5081"
+         x="149.93759"
+         y="393.56964">domain 2</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="229.93759"
+       y="393.56964"
+       id="text5083"><tspan
+         sodipodi:role="line"
+         id="tspan5085"
+         x="229.93759"
+         y="393.56964">host</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="-343.56964"
+       y="49.937584"
+       id="text5087"
+       transform="matrix(0,-1,1,0,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan5089"
+         x="-343.56964"
+         y="49.937584">memory</tspan></text>
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5091"
+       width="10"
+       height="10"
+       x="90"
+       y="337.36218" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5095"
+       width="10"
+       height="10"
+       x="169.93759"
+       y="313.56964" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 174.93758,313.56965 L 174.93758,293.56965"
+       id="path5097" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 59.937585,373.56965 L 274.93758,373.56965"
+       id="path5099" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5101"
+       width="10"
+       height="10"
+       x="240"
+       y="322.36218" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 359.99998,372.36218 L 359.99998,272.36219"
+       id="path5103" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="370"
+       y="392.36218"
+       id="text5105"><tspan
+         sodipodi:role="line"
+         id="tspan5107"
+         x="370"
+         y="392.36218">domain 1</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="450"
+       y="392.36218"
+       id="text5109"><tspan
+         sodipodi:role="line"
+         id="tspan5111"
+         x="450"
+         y="392.36218">domain 2</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="530"
+       y="392.36218"
+       id="text5113"><tspan
+         sodipodi:role="line"
+         id="tspan5115"
+         x="530"
+         y="392.36218">host</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="-342.36218"
+       y="350"
+       id="text5117"
+       transform="matrix(0,-1,1,0,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan5119"
+         x="-342.36218"
+         y="350">memory</tspan></text>
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5121"
+       width="10"
+       height="10"
+       x="390"
+       y="312.36218" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 394.99998,322.36218 L 394.99998,342.36218"
+       id="path5123" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5125"
+       width="10"
+       height="10"
+       x="470"
+       y="287.36218" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 359.99998,372.36218 L 574.99998,372.36218"
+       id="path5129" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5131"
+       width="10"
+       height="10"
+       x="540"
+       y="362.36218" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-opacity:1"
+       d="M 219.9376,603.56966 L 219.9376,503.56966"
+       id="path5133" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="229.93759"
+       y="623.56964"
+       id="text5135"><tspan
+         sodipodi:role="line"
+         id="tspan5137"
+         x="229.93759"
+         y="623.56964">domain 1</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="309.93759"
+       y="623.56964"
+       id="text5139"><tspan
+         sodipodi:role="line"
+         id="tspan5141"
+         x="309.93759"
+         y="623.56964">domain 2</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="389.93759"
+       y="623.56964"
+       id="text5143"><tspan
+         sodipodi:role="line"
+         id="tspan5145"
+         x="389.93759"
+         y="623.56964">host</tspan></text>
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans"
+       x="-573.5697"
+       y="209.93759"
+       id="text5147"
+       transform="matrix(0,-1,1,0,0,0)"><tspan
+         sodipodi:role="line"
+         id="tspan5149"
+         x="-573.5697"
+         y="209.93759">memory</tspan></text>
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5151"
+       width="10"
+       height="10"
+       x="250"
+       y="567.36218" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5155"
+       width="10"
+       height="10"
+       x="330"
+       y="517.36218" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+       d="M 219.9376,603.56966 L 434.9376,603.56966"
+       id="path5159" />
+    <rect
+       
style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.00010002;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect5161"
+       width="10"
+       height="10"
+       x="400"
+       y="572.36218" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 260,192.36218 L 200,272.36218"
+       id="path5227" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 390,192.36218 L 450,272.36218"
+       id="path6794" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Mstart)"
+       d="M 260,492.36218 L 200,412.36218"
+       id="path6796" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Mstart)"
+       d="M 390,492.36218 L 450,412.36218"
+       id="path6798" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:0.5,1;stroke-dashoffset:0"
+       d="M 255,97.362183 L 335,97.362183"
+       id="path7856" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5,
 1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 255,72.362183 L 335,72.362183"
+       id="path7858" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5,
 1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 255,122.36218 L 335,122.36218"
+       id="path7860" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5,
 1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 95.000003,317.36219 L 175,317.36219"
+       id="path7862" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5,
 1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 95.000003,292.36219 L 175,292.36219"
+       id="path7864" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5,
 1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 95.000003,342.36218 L 175,342.36218"
+       id="path7866" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5,
 1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 395,317.36219 L 475,317.36219"
+       id="path7868" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5,
 1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 395,292.36219 L 475,292.36219"
+       id="path7870" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5,
 1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 395,342.36218 L 475,342.36218"
+       id="path7872" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5,
 1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 255,547.36218 L 335,547.36218"
+       id="path7874" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5,
 1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 255,522.36218 L 335,522.36218"
+       id="path7876" />
+    <path
+       
style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:0.5,
 1;stroke-dashoffset:0;stroke-opacity:1"
+       d="M 255,572.36218 L 335,572.36218"
+       id="path7878" />
+    <rect
+       
style="opacity:1;fill:none;fill-opacity:1;stroke:#ff575c;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
+       id="rect7943"
+       width="50"
+       height="70"
+       x="520"
+       y="342.36218" />
+    <text
+       xml:space="preserve"
+       
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ff575c;fill-opacity:1;stroke:#ff575c;stroke-width:0.50000000000000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream
 Vera Sans;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0"
+       x="500"
+       y="442.36218"
+       id="text7945"><tspan
+         sodipodi:role="line"
+         id="tspan7947"
+         x="500"
+         y="442.36218">host free memory</tspan><tspan
+         sodipodi:role="line"
+         x="500"
+         y="457.36218"
+         id="tspan7949">has run out</tspan></text>
+  </g>
+</svg>
diff -r 2eb768a7ff47 -r ce0f41b2f00a docs/squeezed/globals.tex
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/squeezed/globals.tex Tue Dec 15 20:10:58 2009 +0000
@@ -0,0 +1,27 @@
+%
+
+\newcommand{\xapi}{\textsc{XAPI}}
+\newcommand{\squeezed}{\textsc{squeezed}}
+\newcommand{\xen}{\textsc{Xen}}
+%% Document title
+\newcommand{\doctitle}{\squeezed{}: a host memory ballooning daemon }
+
+%% Document date
+\newcommand{\datestring}{9th November 2009}
+
+\newcommand{\releasestatement}{Comments are welcome!}
+
+%% Document revision
+\newcommand{\revstring}{Document Revision 0.1}
+
+%% Document authors
+\newcommand{\docauthors}{
+David Scott: & {\tt dave.scott@xxxxxxxxxxxxx}}
+\newcommand{\legalnotice}{Copyright \copyright{} 2009 Citrix, Inc.\\ \\
+Permission is granted to copy, distribute and/or modify this document under
+the terms of the GNU Free Documentation License, Version 1.2 or any later
+version published by the Free Software Foundation; with no Invariant Sections,
+no Front-Cover Texts and no Back-Cover Texts.  A copy of the license is
+included in the section entitled "GNU Free Documentation License".
+}
+
diff -r 2eb768a7ff47 -r ce0f41b2f00a docs/squeezed/main.tex
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/squeezed/main.tex    Tue Dec 15 20:10:58 2009 +0000
@@ -0,0 +1,356 @@
+%
+
+\documentclass{article}
+
+\usepackage{a4wide}
+\usepackage{graphics}
+\usepackage{longtable}
+\usepackage{fancyhdr}
+\usepackage{url}
+
+\newcommand{\eqdef}{\stackrel{def}{=}}
+
+\setlength\topskip{0cm}
+\setlength\topmargin{0cm}
+\setlength\oddsidemargin{0cm}
+\setlength\evensidemargin{0cm}
+%\setlength\parindent{0pt}
+
+\input{globals}
+
+\begin{document}
+
+% The coversheet itself
+\include{coversheet}
+
+% ... and off we go!
+
+\section{Introduction}
+
+\squeezed{} is a per-host memory ballooning daemon. It performs two tasks:
+\begin{enumerate}
+\item it exports a simple host memory management interface to the \xapi{} 
toolstack through which \xapi{} can {\em reserve} memory for new domains;
+\item it applies a {\em ballooning policy} to all domains running on a host.
+\end{enumerate}
+The daemon currently includes a simple ballooning policy (see 
Section~\ref{Ballooning policy}) and the intention is that this can be replaced 
later with more sophisticated policies (e.g.\ {\em 
xenballoond}\footnote{\url{http://wiki.xensource.com/xenwiki/Open_Topics_For_Discussion?action=AttachFile&do=get&target=Memory+Overcommit.pdf}})).
 Although the only client is the \xapi{} toolstack, the interface can in theory 
be used by other clients.
+
+In the short-term this document will allow the assumptions and the design to 
be reviewed. In the longer term this document will become part of the \xapi{} 
toolstack software design notes.
+
+The rest of this document is structured as follows. Section~\ref{assumptions} 
lists assumptions made by the ballooning daemon on other parts of the system; 
these assumptions need careful review and may not be valid. 
Section~\ref{Toolstack interface} describes the interface between the toolstack 
and the ballooning daemon. Section~\ref{Ballooning policy} describes the simple 
built-in ballooning policy and Section~\ref{memory model} describes how 
\squeezed{} models memory. The main loop of the daemon is described in 
Section~\ref{The main loop} and a detailed example is described in 
Section~\ref{example}. Section~\ref{structure} describes the structure of the 
daemon itself and finally Section~\ref{issues} lists some known issues.
+
+\section{Environmental assumptions}
+\label{assumptions}
+\begin{enumerate}
+\item The \squeezed{} daemon runs within a \xen{} domain 0 and communicates to 
xenstored via a Unix domain socket. Therefore \squeezed{} is granted full 
access to xenstore, enabling it to modify every domain's \texttt{memory/target}.
+
+\item The \squeezed{} daemon calls \texttt{setmaxmem} in order to cap the 
amount of memory a domain can use. This relies on a patch to 
xen\footnote{\url{http://xenbits.xen.org/xapi/xen-3.4.pq.hg?file/c01d38e7092a/max-pages-below-tot-pages}}
 which allows \texttt{maxmem}
+ to be set lower than \texttt{totpages}. See Section~\ref{maxmem} for more 
information.
+
+\item The \squeezed{} daemon assumes that only domains which write 
\texttt{control/feature-balloon} into xenstore can respond to ballooning 
requests. It will not ask any other domains to balloon.
+
+\item The \squeezed{} daemon assumes that the memory used by a domain is: (i) 
that listed in \texttt{domain\_getinfo} as \texttt{totpages}; (ii) shadow as 
given by \texttt{shadow\_allocation\_get}; and (iii) a small (few KiB) of 
miscellaneous \xen{} structures (e.g.\ for domains, vcpus) which are invisible.
+
+\item The \squeezed{} daemon assumes that a domain which is created with a 
particular \texttt{memory/target} (and \texttt{startmem}, to within rounding 
error) will reach a stable value of \texttt{totpages} before writing 
\texttt{control/feature-balloon}.\footnote{%
+The \texttt{control/feature-balloon} key is probably the wrong signal.
+}%
+The daemon writes this value to \texttt{memory/memory-offset} for future 
reference.
+\begin{itemize}
+\item The \squeezed{} daemon does not know or care exactly what causes the 
difference between \texttt{totpages} and \texttt{memory/target} and it does 
{\em not} expect it to remain constant across \xen{} releases. It only expects 
the value to remain constant over the lifetime of a domain.
+\end{itemize}
+
+\item The \squeezed{} daemon assumes that the balloon driver has hit its 
target when difference between \texttt{memory/target} and \texttt{totpages} 
equals the \texttt{memory-offset} value.
+\begin{itemize}
+\item Corrollary: to make a domain with a responsive balloon driver currenty 
using \texttt{totpages} allocate or free $x$, it suffices to set 
\texttt{memory/target} to $x+\texttt{totpages}+\texttt{memory-offset}$ and wait 
for the balloon driver to finish. See Section~\ref{memory model} for more 
detail.
+\end{itemize}
+\item The \squeezed{} daemon must maintain a ``slush fund'' of memory 
(currently 9MiB) which it must prevent any domain from allocating. Since (i) 
some \xen{} operations (such as domain creation) require memory within a 
physical address range (e.g. $<$ 4GiB) and (ii) since \xen{} preferentially 
allocates memory outside these ranges, it follows that by preventing guests 
from allocating {\em all} host memory (even transiently) we guarantee that 
memory from within these special ranges is always available. See 
Section~\ref{twophase section} for more details.
+
+\item The \squeezed{} daemon assumes that it may set \texttt{memory/target} to 
any value within range: \texttt{memory/dynamic-max} to 
\texttt{memory/dynamic-min}
+
+\item The \squeezed{} daemon assumes that the probability of a domain booting 
successfully may be increased by setting \texttt{memory/target} closer to 
\texttt{memory/static-max}.
+
+\item The \squeezed{} daemon assumes that, if a balloon driver has not made 
any visible progress after 5 seconds, it is effectively {\em inactive}. Active 
domains will be expected to pick up the slack.
+\end{enumerate}
+
+\section{Toolstack interface}
+\label{Toolstack interface}
+
+This section begins by describing the concept of a {\em reservation} and then 
describes the toolstack interface in pseudocode.
+
+A {\em reservation} is: an amount of host free memory tagged with an 
associated {\em reservation id}.
+Note this is an internal \squeezed{} concept and \xen{} is completely unaware 
of it. When the daemon is moving memory between domains, it always aims to keep 
+\[
+\mathit{host\ free\ memory} >= s + \sum_i{\mathit{reservation}_i}
+\]
+where $s$ is the size of the ``slush fund'' (currently 9MiB) and 
$\mathit{reservation}_i$ is the amount corresponding to the $i$th reservation.
+
+As an aside:
+Earlier versions of \squeezed{} always associated memory with a \xen{} domain. 
Unfortunately this required domains to be created before memory was freed which 
was problematic because domain creation requires small amounts of contiguous 
frames. Rather than implement some form of memory defragmentation, \squeezed{} 
and \xapi{} were modified to free memory before creating a domain. This 
necessitated making memory {\em reservations} first-class stand-alone entities.
+
+
+Once a {\em reservation} is made (and the corresponding memory is freed), it 
can be {\em transferred} to a domain created by a toolstack. This associates 
the {\em reservation} with that domain so that, if the domain is destroyed, the 
{\em reservation} is also freed. Note that \squeezed{} is careful not to count 
both a domain's {\em reservation} and its \texttt{totpages} during e.g. domain 
building: instead it considers the domain's allocation to be the maximum of 
{\em reservation} and \texttt{totpages}.
+
+The size of a {\em reservation} may either be specified exactly by the caller 
or the caller may provide a memory range. If a range is provided the daemon 
will allocate at least as much as the minimum value provided and as much as 
possible up to the maximum. By allocating as much memory as possible to the 
domain, the probability of a successful boot is increased.
+
+Clients of the \squeezed{} provide a string name when they log in. All 
untransferred reservations made by a client are automatically deleted when a 
client logs in. This prevents memory leaks where a client crashes and loses 
track of its own reservation ids.
+
+The interface looks like this:
+\begin{verbatim}
+string session_id login(string client_name)
+
+string reservation_id reserve_memory(string client_name, int kib)
+int amount, string reservation_id reserve_memory_range(string client_name, int 
min, int max)
+
+void delete_reservation(string client_name, string reservation_id)
+
+void transfer_reservation_to_domain(string client_name, string reservation_id, 
int domid)
+\end{verbatim}
+
+The \xapi{} toolstack has code like the following: (in 
\url{http://www.xen.org/files/XenCloud/ocamldoc/index.html?c=xapi&m=Vmops})
+\begin{verbatim}
+ r_id = reserve_memory_range("xapi", min, max);
+ try:
+    d = domain_create()
+    transfer_reservation_to_domain("xapi", r_id, d)
+ with:
+    delete_reservation("xapi", r_id)
+\end{verbatim}
+
+The interface is currently implemented using a trivial RPC protocol over 
xenstore where requests and responses are directories and their parameters and 
return values are keys in those directories.
+
+\section{Ballooning policy}
+\label{Ballooning policy}
+This section describes the very simple default policy currently built-into 
\squeezed{}.
+
+Every domain has a pair of values written into xenstore: 
\texttt{memory/dynamic-min} and \texttt{memory/dynamic-max} with the following 
meanings:
+\begin{description}
+\item[\texttt{memory/dynamic-min}]: the lowest value that \squeezed{} is 
allowed to set \texttt{memory/target}. The administrator should make this as 
low as possible but high enough to ensure that the applications inside the 
domain actually work.
+\item[\texttt{memory/dynamic-max}]: the highest value that \squeezed{} is 
allowed to set \texttt{memory/target}. This can be used to dynamically cap the 
amount of memory a domain can use.
+\end{description}
+If all balloon drivers are responsive then \squeezed{} daemon allocates memory 
proportionally, so that each domain has the same value of:
+\[
+\frac{
+\texttt{memory/target}-\texttt{memory/dynamic-min}
+}{
+\texttt{memory/dynamic-max}-\texttt{memory/dynamic-min}
+}
+\]
+So:
+\begin{itemize}
+\item if memory is plentiful then all domains will have 
$\texttt{memory/target}=\texttt{memory/dynamic-max}$
+\item if memory is scarce then all domains will have 
$\texttt{memory/target}=\texttt{memory/dynamic-min}$
+\end{itemize}
+Note that the values of \texttt{memory/target} suggested by the policy are 
ideal values. In many real-life situations (e.g. when a balloon driver fails to 
make progress and is declared {\em inactive}) the \texttt{memory/target} values 
will be different.
+
+Note that, by default, domain 0 has 
$\texttt{dynamic\_min}=\texttt{dynamic\_max}$, effectively disabling 
ballooning.  Clearly a more sophisticated policy would be required here since 
ballooning down domain 0 as extra domains are started would be\ldots{} 
problematic.
+
+\section{The memory model used by \squeezed{}}
+\label{memory model}
+This section describes the model used internally by \squeezed{}.
+
+The \squeezed{} daemon considers a ballooning-aware domain (i.e.\ one which 
has written the \texttt{feature-balloon} flag into xenstore) to be a 6-tuple:
+\[
+\mathit{ballooning~domain} = (\texttt{dynamic-min}, \texttt{dynamic-max}, 
\texttt{target}, \texttt{totpages}, \texttt{memory-offset}, \texttt{maxmem})
+\]
+where
+\begin{description}
+\item[\texttt{dynamic-min}]: policy value written to 
\texttt{memory/dynamic-min} in xenstore by a toolstack (see 
Section~\ref{Ballooning policy})
+\item[\texttt{dynamic-max}]: policy value written to 
\texttt{memory/dynamic-max} in xenstore by a toolstack (see 
Section~\ref{Ballooning policy})
+\item[\texttt{target}]: balloon driver target written to 
\texttt{memory/target} in xenstore by \squeezed{}
+\item[\texttt{totpages}]: instantaneous number of pages used by the domain as 
returned by \texttt{domain\_getinfo}
+\item[\texttt{memory-offset}]: constant difference between \texttt{target} and 
\texttt{totpages} when the balloon driver believes no ballooning is necessary:
+\[
+\texttt{memory-offset} \eqdef \texttt{totpages} - \texttt{target} 
\mathit{~when~idle}
+\]
+\item[\texttt{maxmem}]: upper limit on \texttt{totpages}:
+\[
+\texttt{totpages} <= \texttt{maxmem}
+\]
+\end{description}
+For convenience we define a \texttt{totpages'} to be the target value 
necessary to cause a domain currently using \texttt{totpages} to maintain this 
value indefinitely.
+\[
+\texttt{totpages'} \eqdef \texttt{totpages} - \texttt{memory-offset}
+\]
+
+The \squeezed{} daemon believes that:
+\begin{itemize}
+\item a domain should be ballooning iff $\texttt{totpages'} <> 
\texttt{target}$ (unless it has become {\em inactive});
+\item a domain has hit its target iff $\texttt{totpages'} = \texttt{target}$ 
(to within 1 page);
+\item if a domain has $\texttt{target}\leftarrow x$ then, when ballooning is 
complete, it will have $\texttt{totpages}=\texttt{memory-offset}+x$; and 
therefore
+\item to cause a domain to free $y$ it sufficies to set 
$\texttt{target}\leftarrow\texttt{totpages}-\texttt{memory-offset}-y$.
+\end{itemize}
+
+The \squeezed{} daemon considers non-ballooning aware domains (i.e.\ those 
which have not written \texttt{feature-balloon}) to be represented by pairs of:
+\[
+\mathit{other~domain} = (\texttt{totpages}, \mathit{reservation})
+\]
+where
+\begin{description}
+\item[\texttt{totpages}]: instantaneous number of pages used by the domain
+  as returned by \texttt{domain\_getinfo}
+\item[$\mathit{reservation}$]: memory initially freed for this domain by
+  \squeezed{} after a \texttt{transfer\_reservation\_to\_domid} call
+\end{description}
+Note that non-ballooning aware domains will always have
+$\texttt{startmem}=\texttt{target}$ since the domain will not be instructed
+to balloon. Since a domain which is being built will have
+$0<=\texttt{totpages}<=\mathit{reservation}$, \squeezed{} computes:
+\[
+\mathit{unused}(i) \eqdef i.\mathit{reservation} - i.\texttt{totpages}
+\]
+and subtracts this from its model of the host's free memory, ensuring that it 
doesn't accidentally reallocate this memory for some other purpose.
+
+
+The \squeezed{} daemon believes that:
+\begin{itemize}
+\item all guest domains start out as non-ballooning aware domains where 
$\texttt{target}=\mathit{reservation}=\texttt{startmem}$;
+\item some guest domains become ballooning-aware during their boot sequence 
i.e.\ when they write \texttt{feature-balloon}
+\end{itemize}
+
+The \squeezed{} daemon considers a host to be a 5-tuple:
+\[
+\mathit{host} = (\mathit{ballooning~domains}, \mathit{other~domains}, s, 
\texttt{physinfo.free\_pages}, \mathit{reservation}_i)
+\]
+where
+\begin{description}
+\item[$\mathit{ballooning~domains}$]: a list of $\mathit{ballooning~domain}$
+  values representing domains which \squeezed{} will instruct to balloon;
+\item[$\mathit{other~domains}$]: a list of $\mathit{other~domain}$ values
+  which includes both domains which are still booting and will transform
+  into $\mathit{ballooning~domains}$ and those which have no balloon drivers.
+\item[$s$]: a ``slush fund'' of low memory required for \xen{};
+\item[\texttt{physinfo.free\_pages}]: total amount of memory instantanously 
free (including both \texttt{free\_pages} and \texttt{scrub\_pages})
+\item[$\mathit{reservation}_i$]: a set of memory {\em reservations} not 
allocated to any domain
+\end{description}
+The \squeezed{} daemon considers memory to be unused (i.e.\ not allocated for 
any useful purpose) as follows:
+\[
+\mathit{unused~memory} = \texttt{physinfo.free\_pages} -
+\Sigma_i\mathit{reservation}_i - s - 
\Sigma_{i\in\mathit{other~domains}}\mathit{unused}(i)
+\]
+
+\section{The main loop}
+\label{The main loop}
+
+The main loop \footnote{\texttt{change\_host\_free\_memory} in 
\url{http://xenbits.xen.org/xapi/xen-api.hg?file/3e8c0167940d/ocaml/xenops/squeeze.ml}}
  is triggered by either:
+\begin{enumerate}
+\item the arrival of an allocation request on the toolstack interface; or
+\item the policy engine -- polled every 10s -- deciding that a target 
adjustment is needed.
+\end{enumerate}
+Each iteration of the main loop\footnote{\texttt{one\_iteration} in 
\url{http://xenbits.xen.org/xapi/xen-api.hg?file/3e8c0167940d/ocaml/xenops/squeeze.ml}}
 generates the following actions:
+\begin{enumerate}
+\item Domains which were active but have failed to make progress towards their 
target in 5s are declared {\em inactive}. These domains then have:
+\[
+\texttt{maxmem}\leftarrow\mathit{min}(\texttt{target}, \texttt{totpages})
+\]
+\item Domains which were inactive but have started to make progress towards 
their target are declared {\em active}. These domains then have:
+\[
+\texttt{maxmem}\leftarrow\texttt{target}
+\]
+\item Domains which are currently active have new targets computed according 
to the policy (see Section~\ref{Ballooning policy}). Note that inactive domains 
are ignored and not expected to balloon.
+\end{enumerate}
+Note that domains remain classified as {\em inactive} only during one run of 
the main loop. Once the loop has terminated all domains are optimistically 
assumed to be {\em active} again. Therefore should a domain be classified as 
{\em inactive} once, it will get many later chances to respond.
+
+See Section~\ref{twophase section} for more detail on how targets are updated 
and Section~\ref{maxmem} for more detail about \texttt{maxmem}.
+
+The main loop has a notion of a host free memory ``target'', similar to the 
existing domain memory \texttt{target}. When we are trying to free memory (e.g. 
for starting a new VM), the host free memory ``target'' is increased. When we 
are trying to distribute memory among guests (e.g.\ after a domain has shutdown 
and freed lots of memory), the host free memory ``target'' is low. Note the 
host free memory ``target'' is always at least several MiB to ensure that some 
host free memory  with physical address $<$ 4GiB is free (see 
Section~\ref{twophase section} for related information).
+
+The main loop terminates when all {\em active} domains have reached their 
targets (this could be because all domains responded or because they all wedged 
and became inactive); and the policy function hasn't suggested any new target 
changes. There are three possible results:
+\begin{enumerate}
+\item Success if the host free memory is near enough its ``target'';
+\item Failure if the operation is simply impossible within the policy limits 
(i.e. \texttt{dynamic\_min} values are too high;
+\item Failure if the operation failed because one or more domains became {\em 
inactive} and this prevented us from reaching our host free memory ``target''.
+\end{enumerate}
+Note that, since only {\em active} domains have their targets set, the system 
effectively rewards domains which refuse to free memory ({\em inactive}) and 
punishes those which do free memory ({\em active}). This effect is countered by 
signalling to the admin which domains/VMs aren't responding so they can take 
corrective action.
+To achieve this, the daemon monitors the list of {\em inactive} domains and if 
a domain is {\em inactive} for more than 20s it writes a flag into xenstore 
\texttt{memory/uncooperative}. This key is seen by the \xapi{} toolstack which 
currently generates an alert to inform the admin.
+
+
+\subsection{Two-phase target setting}
+\label{twophase section}
+
+\begin{figure}
+\begin{center}
+\includegraphics{fig/twophase}
+\end{center}
+\caption{The diagram shows how a system with two domains can evolve if domain 
\texttt{memory/target} values are increased for some domains and decreased for 
others, at the same time. Each graph shows two domains (domain 1 and domain 2) 
and a host. For a domain, the square box shows its $\texttt{totpages'}$ and the 
arrow indicates the direction of the \texttt{memory/target}. For the host the 
square box indicates total free memory. Note the highlighted state where the 
host's free memory is temporarily exhausted.}
+\label{twophase}
+\end{figure}
+
+Consider the scenario shown graphically in Figure~\ref{twophase}. In the 
initial state (at the top of the diagram), there are two domains, one which has 
been requested to use more memory and the other requested to use less memory. 
In effect the memory is to be transferred from one domain to the other. In the 
final state (at the bottom of the diagram), both domains have reached their 
respective targets, the memory has been transferred and the host free memory is 
at the same value it was initially. However the system will not move atomically 
from the initial state to the final: there are a number of possible transient 
in-between states, two of which have been drawn in the middle of the diagram. 
In the left-most transient state the domain which was asked to {\em free} 
memory has freed all the memory requested: this is reflected in the large 
amount of host memory free. In the right-most transient state the domain which 
was asked to {\em allocate} memory has allocated all the memory requested: now 
the host's free memory has hit zero. 
+
+If the host's free memory hits zero then \xen{} has been forced to give all 
memory to guests, including memory $<$ 4GiB which is critical for allocating 
certain structures. Even if we ask a domain to free memory via the balloon 
driver there is no guarantee that it will free the {\em useful} memory. This 
leads to an annoying failure mode where operations such as creating a domain 
free due to \texttt{ENOMEM} despite the fact that there is apparently lots of 
memory free.
+
+The solution to this problem is to adopt a two-phase \texttt{memory/target} 
setting policy. The \squeezed{} daemon forces domains to free memory first 
before allowing domains to allocate, in-effect forcing the system to move 
through the left-most state in the diagram above.
+
+
+\subsection{Use of \texttt{maxmem}}
+\label{maxmem}
+
+The \xen{} domain \texttt{maxmem} value is used to limit memory allocations by 
the domain. The rules are:
+\begin{enumerate}
+\item if the domain has never been run and is paused then 
$\texttt{maxmem}\leftarrow\texttt{reservation}$ (for information about 
reservations see Section~\ref{Toolstack interface});
+\begin{itemize}
+\item these domains are probably still being built and we must let them 
allocate their \texttt{startmem}
+\item \textbf{FIXME}: this ``never been run' concept pre-dates the 
\texttt{feature-balloon} flag: perhaps we should use the 
\texttt{feature-balloon} flag instead.
+\end{itemize}
+\item if the domain is running and the balloon driver is thought to be working 
then $\texttt{maxmem}\leftarrow\texttt{target}$; and
+\begin{itemize}
+\item there may be a delay between lowering a target and the domain noticing 
so we prevent the domain from allocating memory when it should in fact be 
deallocating.
+\end{itemize}
+\item if the domain is running and the balloon driver is thought to be 
inactive then $\texttt{maxmem}\leftarrow \mathit{min}(\texttt{target}, 
\texttt{actual})$.
+\begin{itemize}
+\item if the domain is using more memory than it should then we allow it to 
make progress down towards its target; however
+\item if the domain is using less memory than it should then we must prevent 
it from suddenly waking up and allocating more since we have probably just 
given it to someone else
+\item \textbf{FIXME}: should we reduce the target to leave the domain in a 
neutral state instead of asking it to allocate and fail forever?
+\end{itemize}
+\end{enumerate}
+   
+\section{Example operation}
+\label{example}
+
+\begin{figure}
+\begin{center}
+\includegraphics{fig/calculation}
+\end{center}
+\caption{The diagram shows an initial system state comprising 3 domains on a 
single host. The state is not ideal; the domains each have the same policy 
settings (\texttt{dynamic-min} and \texttt{dynamic-max}) and yet are using 
differing values of $\texttt{totpages'}$. 
+ In addition the host has more memory free than desired. The second diagram 
shows the result of computing ideal target values and the third diagram shows 
the result after targets have been set and the balloon drivers have responded.}
+\label{calculation}
+\end{figure}
+
+The scenario in Figure~\ref{calculation} includes 3 domains (domain 1, domain 
2, domain 3) on a host. Each of the domains has a non-ideal 
$\texttt{totpages'}$ value.
+
+ Recall we also have the policy constraint that:
+\[
+\texttt{dynamic-min} <= \texttt{target} <= \texttt{dynamic-max}
+\]
+Hypothetically if we reduce \texttt{target} by 
$\texttt{target}-\texttt{dynamic-min}$ (i.e. by setting 
$\texttt{target}\leftarrow\texttt{dynamic-min}$) then we should reduce 
\texttt{totpages} by the same amount, freeing this much memory on the host. In 
the upper-most graph in Figure~\ref{calculation} the total amount of memory 
which would be freed if we set each of the 3 domain's 
$\texttt{target}\leftarrow\texttt{dynamic-min}$ is:
+\[
+\mathit{d1} + \mathit{d2} + \mathit{d3}
+\]
+In this hypothetical situation we would now have $x + s + \mathit{d1} + 
\mathit{d2} + \mathit{d3}$ free on the host where $s$ is the host slush fund 
and $x$ is completely unallocated. Since we always want to keep the host free 
memory above $s$, we are free to return $x + \mathit{d1} + \mathit{d2} + 
\mathit{d3}$ to guests. If we use the default built-in proportional policy 
then, since all domains have the same \texttt{dynamic-min} and 
\texttt{dynamic-max}, each gets the same fraction of this free memory which we 
call $g$:
+\[
+g \eqdef \frac{x + \mathit{d1} + \mathit{d2} + \mathit{d3}}{3}
+\]
+For each domain, the ideal balloon target is now $\texttt{target} = 
\texttt{dynamic-min} + g$. The \squeezed{} daemon sets these targets in two 
phases, as described in Section~\ref{twophase section}
+
+\section{The structure of the daemon}
+\label{structure}
+The \squeezed{} daemon is a single-threaded daemon which is started by an 
\texttt{init.d} script. It sits waiting for incoming requests on its toolstack 
interface and checks every 10s whether all domain targets are set to the ideal 
values (see Section~\ref{Ballooning policy}). If an allocation request arrives 
or if the domain targets require adjusting then it calls into the module 
\url{ocaml/xenops/squeeze_xen.ml}\footnote{\url{http://www.xen.org/files/XenCloud/ocamldoc/index.html?c=xenops&m=Squeeze_xen}}.
+
+The module \url{ocaml/xenops/squeeze_xen.ml} contains code which inspects the 
state of the host (through hypercalls and reading xenstore) and creates a set 
of records describing the current state of the host and all the domains. Note 
this snapshot of state is not atomic -- it is pieced together from multiple 
hypercalls and xenstore reads -- we assume that the errors generated are small 
and we ignore them.
+ These records are passed into the 
\url{ocaml/xenops/squeeze.ml}\footnote{\url{http://www.xen.org/files/XenCloud/ocamldoc/index.html?c=xenops&m=Squeeze}}
 module where they are processed and converted into a list of {\em actions} 
i.e. (i) updates to \texttt{memory/target} and; (ii) declarations that 
particular domains have become {\em inactive} or {\em active}. The rationale 
for separating the \xen{} interface from the main ballooning logic was to make 
testing easier: the module 
\url{ocaml/xenops/squeeze_test.ml}\footnote{\url{http://www.xen.org/files/XenCloud/ocamldoc/index.html?c=xenops&m=Squeeze_test}}
 contains a simple simulator which allows various edge-cases to be checked.
+
+\section{Issues}
+\label{issues}
+\begin{itemize}
+\item If a linux domU kernel has the netback, blkback or blktap modules then 
they away pages via \texttt{alloc\_empty\_pages\_and\_pagevec()} during boot. 
This interacts with the balloon driver to break the assumption that, reducing 
the target by $x$ from a neutral value should free $x$ amount of memory.
+\item Polling the state of the host (particular the xenstore contents) is a 
bit inefficient. Perhaps we should move the policy values \texttt{dynamic\_min} 
and \texttt{dynamic\_max} to a separate place in the xenstore tree and use 
watches instead.
+\item The memory values given to the domain builder are in units of MiB. We 
may wish to similarly quantise the \texttt{target} value or check that the 
\texttt{memory-offset} calculation still works.
+\item The \xen{} patch queue reintroduces the lowmem emergency 
pool\footnote{\url{http://xenbits.xen.org/xapi/xen-3.4.pq.hg?file/c01d38e7092a/lowmem-emergency-pool}}.
 This was an attempt to prevent guests from allocating lowmem before we 
switched to a two-phase target setting procedure. This patch can probably be 
removed.
+\item It seems unnecessarily evil to modify an {\em inactive} domain's 
\texttt{maxmem} leaving $\texttt{maxmem}<\texttt{target}$, causing the guest to 
attempt allocations forwever. It's probably neater to move the \texttt{target} 
at the same time.
+\item Declaring a domain {\em active} just because it makes small amounts of 
progress shouldn't be enough. Otherwise a domain could free 1 byte (or maybe 1 
page) every 5s.
+\item Likewise, declaring a domain ``uncooperative'' only if it has been {\em 
inactive} for 20s means that a domain could alternate between {\em inactive} 
for 19s and {\em active} for 1s and not be declared ``uncooperative''.
+\end{itemize}
+\appendix{}
+
+\include{fdl}
+
+\end{document}
diff -r 2eb768a7ff47 -r ce0f41b2f00a docs/squeezed/squeezer.tex
--- /dev/null   Thu Jan 01 00:00:00 1970 +0000
+++ b/docs/squeezed/squeezer.tex        Tue Dec 15 20:10:58 2009 +0000
@@ -0,0 +1,212 @@
+\chapter{Overview of the memory squeezer}
+\section{summary}
+\begin{itemize}
+\item ballooning is a per-domain operation; not a per-VM operation. A VM may 
be represented by multiple domains
+  (currently localhost migrate, in the future stubdomains)
+\item most free host memory is divided up between running domains 
proportionally, so they all end up with the same
+  value of {\tt ratio}
+\end{itemize}
+
+\begin{verbatim}
+  where ratio(domain) = 
+     if domain.dynamic_max - domain.dynamic_min = 0 
+     then 0 
+     else (domain.target - domain.dynamic_min) 
+          / (domain.dynamic_max - domain.dynamic_min)
+\end{verbatim}
+
+\section{Assumptions}
+\begin{itemize}
+\item all memory values are stored and processed in units of KiB
+\item the squeezing algorithm doesn't know about host or VM overheads but this 
doesn't matter because
+\item the squeezer assumes that any free host memory can be allocated to 
running domains and this will be directly reflected in their memory\_actual 
i.e. if x KiB is free on the host we can tell a guest to use x KiB and see the 
host memory goes to 0 and the guest's memory\_actual increase by x KiB. We 
assume that no-extra 'overhead' is required in this operation (all overheads 
are functions of static\_max only)
+\end{itemize}
+
+\section{Definitions}
+
+\begin{itemize}
+\item domain: an object representing a xen domain
+\item domain.domid: unique identifier of the domain on the host
+\item domaininfo(domain): a function which returns live per-domain information 
from xen (in real-life a hypercall)
+\item a domain is said to "have never run" if never\_been\_run(domain)
+\begin{verbatim}
+  where never_been_run(domain) = domaininfo(domain).paused 
+      and not domaininfo(domain).shutdown 
+      and domaininfo(domain).cpu_time = 0
+\end{verbatim}
+\item xenstore-read(path): a function which returns the value associated with 
'path' in xenstore
+\item domain.initial\_reservation: used to associate freshly freed memory with 
a new domain which is being built or restored
+\begin{verbatim}
+  domain.initial_reservation = 
+    xenstore-read(/local/domain/<domain.domid>/memory/initial-reservation)
+\end{verbatim}
+\item domain.target: represents what we think the balloon target currently is
+\begin{verbatim}
+  domain.target = 
+      if never_been_run(domain)
+      then xenstore-read(/local/domain/<domain.domid>/memory/target)
+      else domain.initial_reservation
+\end{verbatim}
+\item domain.dynamic\_min: represents what we think the dynamic\_min currently 
is 
+\begin{verbatim}
+  domain.dynamic_min = 
+      if never_been_run(domain)
+      then xenstore-read(/local/domain/<domain.domid>/memory/dynamic_min)
+      else domain.initial_reservation
+\end{verbatim}
+\item domain.dynamic\_max: represents what we think the dynamic\_max currently 
is
+\begin{verbatim}
+  domain.dynamic_max = 
+      if never_been_run(domain)
+      then xenstore-read(/local/domain/<domain.domid>/memory/dynamic_max)
+      else domain.initial_reservation
+\end{verbatim}
+\item domain.memory\_actual: represents the memory we think the guest is using 
(doesn't take overheads like shadow into account)
+\begin{verbatim}
+  domain.memory_actual = 
+      if never_been_run(domain)
+      max domaininfo(domain).total_memory_pages domain.initial_reservation
+      else domaininfo(domain).total_memory_pages
+\end{verbatim}
+\item domain.memory\_actual\_last\_update\_time: time when we saw the last 
change in memory\_actual
+\item domain.unaccounted\_for: a fresh domain has memory reserved for it but 
xen doesn't know about it. We subtract this from the host memory xen thinks is 
free.
+\begin{verbatim}
+  domain.unaccounted_for =
+      if never_been_run(domain)
+      then max 0 (domain.initial_reservation - 
domaininfo(domain).total_memory_pages)
+\end{verbatim}
+\item domain.max\_mem: an upper-limit on the amount of memory a domain can 
allocate. Initially static\_max.
+\begin{verbatim}
+  domain.max_mem = domaininfo(domain).max_mem
+\end{verbatim}
+\item assume\_balloon\_driver\_stuck\_after: a constant number of seconds 
after which we conclude that the balloon driver has stopped working
+\begin{verbatim}
+  assume_balloon_driver_stuck_after = 2
+\end{verbatim}
+\item domain.active: a boolean value which is true when we think the balloon 
driver is functioning
+\begin{verbatim}
+  domain.active = has_hit_target(domain) 
+      or (now - domain.memory_actual_last_update_time) 
+           > assume_balloon_driver_stuck_after
+\end{verbatim}
+\item a domain is said to "have hit its target" if has\_hit\_target(domain)
+\begin{verbatim}
+  where has_hit_target(domain) = floor(memory_actual / 4) = floor(target / 4)
+\end{verbatim}
+  NB this definition might have to be loosened if it turns out that some 
drivers are less accurate than this.
+\item a domain is said to "be capable of ballooning" if can\_balloon(domain)
+  where can\_balloon(domain) = not domaininfo(domain).paused
+
+
+\item host: an object representing a XenServer host
+\item host.domains: a list of domains present on the host
+\item physinfo(host): a function which returns live per-host information from 
xen (in real-life a hypercall)
+\item host.free\_mem: amount of memory we consider to be free on the host
+\begin{verbatim}
+  host.free_mem = physinfo(host).free_pages + physinfo(host).scrub_pages 
+    - \sigma d\in host.domains. d.unaccounted_for
+\end{verbatim}
+\end{itemize}
+
+\section{Squeezer APIs}
+The squeezer has 2 APIs:
+\begin{enumerate}
+\item allocate-memory-for-domain(host, domain, amount): frees "amount" and 
"reserves" (as best it can) it for a particular domain
+\item rebalance-memory: called after e.g. domain destruction to rebalance 
memory between the running domains
+\end{enumerate}
+
+allocate-memory-for-domain keeps contains the main loop which performs the 
actual target and max\_mem adjustments:
+\begin{verbatim}
+function allocate-memory-for-domain(host, domain, amount):
+  \forall d\in host.domains. d.max_mem <- d.target
+  while true do
+    -- call change-host-free-memory with a "success condition" set to 
+    -- "when the host memory is >= amount"
+    declared_active, declared_inactive, result = 
+        change-host-free-memory(host, amount, \lambda m >= amount)
+    if result == Success:
+      domain.initial_reservation <- amount
+      return Success
+    elif result == DynamicMinsTooHigh:
+      return DynamicMinsTooHigh
+    elif result == DomainsRefusedToCooperate:
+      return DomainsRefusedToCooperate
+    elif result == AdjustTargets(adjustments):
+      \forall (domain, target)\in adjustments:
+         domain.max_mem <- target
+         domain.target <- target
+
+    \forall d\in declared_inactive:
+      domain.max_mem <- min domain.target domain.memory_actual
+    \forall d\in declared_active:
+      domain.max_mem <- domain.target
+  done
+\end{verbatim}
+The helper function change-host-free-memory(host, amount) does the "thinking":
+\begin{enumerate}
+\item it keeps track of whether domains are active or inactive (only for the 
duration of the squeezer API call -- when the next 
+  call comes in we assume that all domains are active and capable of 
ballooning... a kind of "innocent until proven guilty" approaxh)
+\item it computes what the balloon targets should be
+\end{enumerate}
+
+\begin{verbatim}
+function change-host-free-memory(host, amount, success_condition):
+  \forall d\in host.domains. recalculate domain.active
+  active_domains <- d\in host.domains where d.active = true
+  inactive_domains <- d\in host.domains where d.active = false
+  -- since the last time we were called compute the lists of domains 
+  -- which have become active and inactive
+  declared_active, declared_inactive <- ...
+  -- compute how much memory we could free or allocate given only the 
+  -- active domains
+  maximum_freeable_memory = 
+     sum(d\in active_domains)(d.memory_actual - d.dynamic_min)
+  maximum_allocatable_memory = 
+     sum(d\in active_domains)(d.dynamic_max - d.memory_actual)
+  -- hypothetically consider freeing the maximum memory possible. 
+  -- How much would we have to give back after we've taken as much as we want?
+  give_back = max 0 (maximum_freeable_memory - amount)
+  -- compute a list of target changes to 'give this memory back' to 
active_domains
+  -- NB this code is careful to allocate *all* memory, not just most 
+  -- of it because of a rounding error.
+  adjustments = ...
+  -- decide whether every VM has reached its target (a good thing)
+  all_targets_reached = true if \forall d\in active_domains.has_hit_target(d)
+  
+  -- If we're happy with the amount of free memory we've got and the active 
+  -- guests have finished ballooning
+  if success_condition host.free_mem = true 
+     and all_targets_reached and adjustments = []
+  then return declared_active, declared_inactive, Success
+  
+  -- If we're happy with the amount of free memory and the running domains 
+  -- can't absorb any more of the surplus
+  if host.free_mem >= amount and host.free_mem - maximum_allocatable_memory = 0
+  then return declared_active, declared_inactive, Success
+
+  -- If the target is too aggressive because of some non-active domains
+  if maximum_freeable_memory < amount and inactive_domains <> []
+  then return declared_active, declared_inactive, 
+           DomainsRefusedToCooperate inactive_domains
+
+  -- If the target is too aggressive not because of the domains themselves 
+  -- but because of the dynamic_mins
+  return declared_active, declared_inactive, DynamicMinsTooHigh
+\end{verbatim}
+
+The API rebalance-memory aims to use up as much host memory as possible EXCEPT 
it is necessary to keep some around
+for xen to use to create empty domains with.
+
+\begin{verbatim}
+Currently we have:
+ -- 10 MiB
+ target_host_free_mem = 10204
+ -- it's not always possible to allocate everything so a bit of slop has 
+ -- been added here:
+ free_mem_tolerance = 1024
+
+function rebalance-memory(host):
+  change-host-free-memory(host, target_host_free_mem, 
+      \lambda m. m - target_host_free_mem < free_mem_tolerance)
+  -- and then wait for the xen page scrubber
+\end{verbatim}
10 files changed, 4789 insertions(+)
docs/squeezed/Makefile            |    4 
docs/squeezed/coversheet.tex      |   42 +
docs/squeezed/fdl.tex             |  488 +++++++++++++
docs/squeezed/fig/calculation.eps | 1362 +++++++++++++++++++++++++++++++++++++
docs/squeezed/fig/calculation.svg |  824 ++++++++++++++++++++++
docs/squeezed/fig/twophase.eps    |  977 ++++++++++++++++++++++++++
docs/squeezed/fig/twophase.svg    |  497 +++++++++++++
docs/squeezed/globals.tex         |   27 
docs/squeezed/main.tex            |  356 +++++++++
docs/squeezed/squeezer.tex        |  212 +++++


Attachment: xen-api.hg-2.patch
Description: Text Data

_______________________________________________
xen-api mailing list
xen-api@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/mailman/listinfo/xen-api