1
0
Fork 0
virtualbox/doc/manual/en_US/dita/topics/guestadd-pagefusion.dita
Daniel Baumann 2b3ba1f3e4
Merging upstream version 7.1.8-dfsg.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
2025-06-24 20:41:59 +02:00

101 lines
4.8 KiB
XML

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE topic PUBLIC "-//OASIS//DTD DITA Topic//EN" "topic.dtd">
<topic xml:lang="en-us" id="guestadd-pagefusion">
<title>Page Fusion</title>
<body>
<p>
Whereas memory ballooning simply reduces the amount of RAM that
is available to a VM, Page Fusion works differently. It avoids
memory duplication between several similar running VMs.
</p>
<p>
In a server environment running several similar VMs on the same
host, lots of memory pages are identical. For example, if the
VMs are using identical operating systems. <ph conkeyref="vbox-conkeyref-phrases/product-name"/>'s Page
Fusion technology can efficiently identify these identical
memory pages and share them between multiple VMs.
</p>
<note>
<p>
<ph conkeyref="vbox-conkeyref-phrases/product-name"/> supports Page Fusion only on 64-bit hosts, and
it is not supported on macOS hosts. Page Fusion currently
works only with Windows 2000 and later guests.
</p>
</note>
<p>
The more similar the VMs on a given host are, the more
efficiently Page Fusion can reduce the amount of host memory
that is in use. It therefore works best if all VMs on a host run
identical operating systems. Instead of having a complete copy
of each operating system in each VM, Page Fusion identifies the
identical memory pages in use by these operating systems and
eliminates the duplicates, sharing host memory between several
machines. This is called <i>deduplication</i>. If
a VM tries to modify a page that has been shared with other VMs,
a new page is allocated again for that VM with a copy of the
shared page. This is called <i>copy on write</i>.
All this is fully transparent to the virtual machine.
</p>
<p>
You may be familiar with this kind of memory overcommitment from
other hypervisor products, which call this feature
<i>page sharing</i> or <i>same page
merging</i>. However, Page Fusion differs significantly
from those other solutions, whose approaches have several
drawbacks:
</p>
<ul>
<li>
<p>
Traditional hypervisors scan <i>all</i> guest
memory and compute checksums, also called hashes, for every
single memory page. Then, they look for pages with identical
hashes and compare the entire content of those pages. If two
pages produce the same hash, it is very likely that the
pages are identical in content. This process can take rather
long, especially if the system is not idling. As a result,
the additional memory only becomes available after a
significant amount of time, such as hours or sometimes days.
Even worse, this kind of page sharing algorithm generally
consumes significant CPU resources and increases the
virtualization overhead by 10 to 20%.
</p>
<p>
Page Fusion in <ph conkeyref="vbox-conkeyref-phrases/product-name"/> uses logic in the
<ph conkeyref="vbox-conkeyref-phrases/product-name"/> Guest Additions to quickly identify memory
cells that are most likely identical across VMs. It can
therefore achieve most of the possible savings of page
sharing almost immediately and with almost no overhead.
</p>
</li>
<li>
<p>
Page Fusion is also much less likely to be confused by
identical memory that it will eliminate, just to learn
seconds later that the memory will now change and having to
perform a highly expensive and often service-disrupting
reallocation.
</p>
</li>
</ul>
<p>
At this time, Page Fusion can only be controlled with
<userinput>VBoxManage</userinput>, and only while a VM is shut down.
To enable Page Fusion for a VM, use the following command:
</p>
<pre xml:space="preserve">VBoxManage modifyvm "VM name" --page-fusion on</pre>
<p> You can observe Page Fusion operation using some metrics. <codeph>RAM/VMM/Shared</codeph>
shows the total amount of fused pages, whereas the per-VM metric
<codeph>Guest/RAM/Usage/Shared</codeph> will return the amount of fused memory for a given
VM. See <xref href="vboxmanage-metrics.dita"/> for information on how to query metrics. </p>
<note>
<p>
Enabling Page Fusion might indirectly increase the chances for
malicious guests to successfully attack other VMs running on
the same host. See <xref href="pot-insecure.dita">Potentially Insecure Operations</xref>.
</p>
</note>
</body>
</topic>