Hotplugging RAM - uvm_hotplug(9), the Xen balloon(4) driver and portmasters' FAQ
Adding and removing hardware components in operation is common in
today's commoditized computing environments. This was not always
the case - in the past century, one had to power down a machine
in order to change network cards, harddisks or RAM.
A major step towards changing a system's configuration at runtime
for customers came with USB, but that's not where it ends - other
systems like PCI support hotplugging as well.
Another area where changing of the system's configuration is
the amount of Ramdom Access Memory (RAM) of a system.
Usually fixed, this is determined at system start time, and
then managed by the operating system's memory managent system.
But esp. with today's virtualized hardware systems, even
the amount of RAM assigned to a system can easily be changed.
For example a VM can be assigned more RAM when needed,
without even rebooting the system, leading to
performance without introducing swapping/paging overhead.
Of course this required support from the operating system and
its memory management subsystem.
For NetBSD, the UVM
virtual memory system was now changed to support this via the
API, and a first user for this is the Xen
Quoting from the
``The balloon driver supports the memory ballooning operations offered in
Xen environments. It allows shrinking or extending a domain's available
memory by passing pages between different domains.''
manpage gives us more information on the UVM hotplug functionality:
``When the kernel is compiled with 'options UVM_HOTPLUG',
memory segments are handled in a dynamic data structure (rbtree(3)) com-
pared to a static array when not. This enables kernel code to add or
remove information about memory segments at any point after boot - thus
To answer more questions for portmasters who want to change
their ports, Cherry G. Mathew has now
posted a uvm_hotplug(9) port masters' FAQ.
It covers questions on the background, affected files,
and needed changes.
For more information on UVM,
see Charles' Chuck' Cranor's PhD disertation on
Design and Implementation of UVM
(PDF) as well as his
Usenix talk on the UVM Virtual Memory System (PS).
There is also
plenty of information available on Xen ballooning
- check it out and share your experiences on NetBSD's
port-xen mailing list!
[Tags: balloon, faq, hotplug, uvm, xen]