This post is one of a series of "best practices" notes for Oracle VM Server for SPARC (formerly named Logical Domains).
This is an updated and enlarged version of the post on this topic
originally posted October 2012.
One frequent question "what type of domain should I use to run applications?"
There used to be a simple answer: "run applications in guest domains in almost all cases",
but now there are more things to consider.
Enhancements to Oracle VM Server for SPARC and introduction of systems like the current
SPARC servers
including the T4 and T5 systems, the
Oracle SuperCluster T5-8 and
Oracle SuperCluster M6-32
provide scale and performance much higher than the original servers that ran domains.
Single-CPU performance, I/O capacity, memory sizes, are much larger now, and
far more demanding applications are now being hosted in logical domains.
The general advice continues to be "use guest domains in almost all cases", meaning,
"use virtual I/O rather than physical I/O", unless
there is a specific reason to use the other domain types.
The sections below will discuss the criteria for choosing between domain types.
Review: division of labor and types of domain
Oracle VM Server for SPARC offloads management and I/O functionality from the hypervisor to domains (also called virtual machines),
providing a modern alternative to older VM architectures that use a "thick", monolithic hypervisor.
This permits a simpler hypervisor design, which enhances
reliability, and security. It also reduces single points of failure by assigning responsibilities
to multiple system components, further improving reliability and security.
Oracle VM Server for SPARC defines the following types of domain, each with their own roles:
Control domain - management control point for the server, runs the logical domain daemon and constraints engine, and is used to configure domains and manage resources. The control domain
is the first domain to boot on a power-up,
is always an I/O domain,
and is usually a service domain as well. It doesn't have to be, but there's no reason to not leverage it for virtual I/O services.
There is one control domain per T-series system, and one per Physical Domain (PDom) on an M5-32 or M6-32 system. M5 and M6
systems can be physically domained, with logical domains within the physical ones.
I/O domain - a domain that has been assigned physical I/O devices. The devices may be
one more more PCIe root complexes (in which case the domain is also called a root complex domain). The domain has native access to all the devices on the assigned PCIe buses. The devices can be any device type supported by Solaris on the hardware platform.
a SR-IOV (Single-Root I/O Virtualization) function. SR-IOV lets a physical device (also called a physical function) or PF) be subdivided into multiple virtual functions (VFs) which can be individually assigned directly to domains.
SR-IOV devices currently can be Ethernet or InfiniBand devices.
direct I/O ownership of one or more PCI devices residing in a PCIe bus slot. The domain has direct access to the individual devices
An I/O domain has native performance and functionality for the devices it owns, unmediated by any virtualization layer.
It may also have virtual devices.
Service domain - a domain that provides virtual network and disk devices to guest domains.
The services are defined by commands that are run in the control domain.
It usually is an I/O domain as well, in order for it to have devices to virtualize and serve out.
Guest domain - a domain whose devices are all virtual rather than physical: virtual network and disk devices provided by one or more service domains. In common practice, this is where applications are run.
Device considerations
Consider the following when choosing between virtual devices and physical devices:
Virtual devices provide the best flexibility - they can be dynamically added to and removed from a running domain, and you can have a large number of them up to a per-domain device limit.
Virtual devices are compatible with live migration - domains that exclusively have virtual devices can be live migrated between servers supporting domains.
On the other hand:
Physical devices provide the best performance - in fact, native "bare metal" performance. Virtual devices approach physical device throughput and latency, especially with virtual network devices that can now saturate 10GbE links, but physical devices are still faster.
Physical I/O devices do not add load to service domains - all the I/O goes directly from the I/O domain to the device, while virtual I/O goes through service domains, which must be provided sufficient CPU and memory capacity.
Physical I/O devices can be other than network and disk - we virtualize network, disk, and serial console, but physical devices can be the wide range of attachable certified devices, including things like tape and CDROM/DVD devices.
In some cases the lines are now blurred: virtual devices have better performance than previously: starting with Oracle VM Server for SPARC 3.1 there is near-native virtual network performance.
There is more flexibility with physical devices than before: SR-IOV devices can now be dynamically reconfigured on domains.
Tradeoffs one used to have to make are now relaxed: you can often have the flexibility of virtual I/O with performance that previously required physical I/O. You can have the performance and isolation of SR-IOV with the ability to dynamically reconfigure it, just like with virtual devices.
Typical deployment
A service domain is generally also an I/O domain: otherwise it wouldn't have access to physical device "backends" to offer to its clients.
Similarly, an I/O domain is also typically a service domain in order to leverage the available PCI buses.
Control domains must be I/O domains, because they boot up first on the server and require physical I/O.
It's typical for the control domain to also be a service domain too so it doesn't "waste" the I/O resources it uses.
A simple configuration consists of a control domain that is also the one I/O and service domain, and some number of
guest domains using virtual I/O.
In production, customers typically use multiple domains with I/O and service roles
to eliminate single points of failure, as described in
Availability Best Practices - Avoiding Single Points of Failure .
Guest domains have virtual disk and virtual devices provisioned from more than one service domain, so failure of a service domain or I/O path or device does not result in an application outage.
This also permits "rolling upgrades" in which service domains are upgraded one at a time while their guests continue to
operate without disruption.
(It should be noted that resiliency to I/O device failures can also be provided by the single control domain, using multi-path I/O)
In this type of deployment, control, I/O, and service domains are used for virtualization infrastructure,
while applications run in guest domains.
Changing application deployment patterns
The above model has been widely and successfully used, but more configuration options are available now.
Servers got bigger than the original T2000 class machines with 2 I/O buses,
so there is more I/O capacity that can be used for applications.
Increased server capacity made it attractive to run more vertically-scaled applications, such as databases,
with higher resource requirements than the "light" applications originally seen.
This made it attractive to run applications in I/O domains so they could get bare-metal native I/O performance.
This is leveraged by the Oracle SuperCluster engineered systems mentioned previously.
In those engineered systems, I/O domains are used for high performance applications with native I/O performance for disk and network
and optimized access to the Infiniband fabric.
Another technical enhancement is Single Root I/O Virtualization (SR-IOV),
which make it possible to give domains direct connections and native I/O performance for selected I/O devices.
Not all I/O domains own PCI complexes, and there are increasingly more I/O domains that are not service domains.
They use their I/O connectivity for performance for their own applications.
However, there are some limitations and considerations: at this time, a domain using physical I/O cannot be live-migrated to another server.
There is also a need to plan for security and introducing unneeded dependencies: if an I/O domain is also a service
domain providing virtual I/O to guests, it has the ability to affect the correct operation of its client guest domains.
This is even more relevant for the control domain. where the ldm command must be protected from unauthorized (or even mistaken) use
that would affect other domains. As a general rule, running applications in the service domain or
the control domain should be avoided.
For reference, an excellent guide to secure deployment of domains by Stefan Hinker is at
Secure Deployment of Oracle VM Server for SPARC.
To recap:
Guest domains with virtual I/O still provide the greatest operational flexibility, including features like live migration.
They should be considered the default domain type to use unless there is a specific requirement that mandates an I/O domain.
I/O domains can be used for applications with the highest performance requirements.
Single Root I/O Virtualization (SR-IOV) makes this more attractive by giving direct I/O access to more domains,
and by permitting dynamic reconfiguration of SR-IOV devices.
Today's larger systems provide multiple PCIe buses - for example, 16 buses on the T5-8 - making it possible to configure
multiple I/O domains each owning their own bus.
Service domains should in general not be used for applications, because compromised security in the domain, or an outage, can affect domains that depend on it. This concern can be mitigated by providing guests' their virtual I/O from more than one service domain, so interruption of service in one service domain does not cause an application outage.
The control domain should in general not be used to run applications, for the same reason.
Oracle SuperCluster uses the control domain for applications, but it is an exception. It's not a general purpose
environment; it's an engineered system with specifically configured applications and optimization for optimal performance.
These are recommended "best practices" based on conversations with a number of Oracle architects.
Keep in mind that "one size does not fit all", so you should evaluate these practices in the context of your own requirements.
Summary
Higher capacity servers that run Oracle VM Server for SPARC are attractive for applications with the most demanding resource requirements.
New deployment models permit native I/O performance for demanding applications by running them in I/O domains
with direct access to their devices. This is leveraged in SPARC SuperCluster, and can be leveraged in T-series servers
to provision high-performance applications running in domains. Carefully planned, this can be used to provide peak performance
for critical applications.
That said, the improved virtual device performance in Oracle VM Server means that the default choice should still be guest domains with virtual I/O.