The concept of virtual machines in not new and IBM
mainframes have had the ability to "spilt" mainframe machines using tools such
as Prism. In a nutshell, vmware allows the DBA to apportion hardware
resources (dedicated CPU, RAM, disk) as-if they were on a separate server.
Of course, Oracle has other ways to dedicate CPU's, (via the
Oracle affinity feature) and adjust CPU dispatching priorities with the
UNIX/Linux "nice" command.
In the world of minicomputers, VMware was largely ignored
until manufacturers began to offer large machines such as the HP Superdome and
UNISYS ES-700 series, large mainframe-like machines that are capable of
supporting dozens of Oracle instances. Also see
these 2007 updates to Oracle hardware architectures and
costs and benefits of server deconsolidation.
Now, with the
2nd age of mainframe computing
arriving soon, these large monolithic servers can be split into "virtual
machines", allowing one "master" OS to host many other operating systems within
a single large server. Disk, CPU and RAM are now fault-tolerant and
redundant, making the monolithic approach very compelling to large corporations,
making Oracle vmware a important tool for multi-OS environments to achieve
Instead of small, independent
servers, the major hardware vendors are pushing large servers with transparent
sharing of hardware resources, coining the term ďpartitionable serversĒ.
- The largest
Sun Starcat server has 128 CPUís, and
Solaris processor sets allow for virtualization Solaris-based
applications and Solarisô containers are an integral part of Solaris 10.
- IBM - IBM now goes beyond
Regatta class servers with the
P690, a behemoth with 128 processors. This allows Oracle shops to
scale-up within the same server.
- UNISYS - The
UNISYS ES-7000 series offers a 32 CPU server capable of running dozens
of large Oracle applications
Without server consolidation, the DBA had to deliberately
over-allocate RAM and CPU resources to accommodate spikes in processing, a huge
waste of hardware power:
Alternatives to Oracle vmware?
As we noted, Oracle affinity and CPU dispatching can be
used to pseudo-segregate homogenous applications on the same server, but there
are other alternatives than Oracle vmware for heterogeneous environments.
In his article
The Rise of the Virtual Machine, Lt. Col Garmany notes the three types of
virtualization and the advantages and disadvantages of Oracle vmware:
- Virtualized Server
- Para-virtualized Server
Manual virtualization and partitioning techniques
Virtualization is one of the oldest technologies around,
and IBM mainframes have had virtualization tools since the 1970ís. Itís a mature
and well-defined area.
Itís important to note that virtualization is about fencing
RAM and processor access. Itís not about disk resources since they are
controlled at the application level.
Itís easy to keep an instance
from hogging the CPU by using the cpu_count as a processor fence (you can
set cpu_count=4 on a 32 CPU machine, and the instance will only use two
processors, and that you can use the resource_manager_cpu_allocation to
control processing resources. At the OS level, you can also control resources
with the CPU affinity features, and you can adjust the priority of individual
processes with the Linux/UNIX ďniceĒ command, which changes the
dispatching priority for server tasks.
Virtualizing CPU resources
Processor (CPU) dedication is called "CPU affinity", and
it's been used for decades on large mainframe computers.
Today, CPU affinity a common technique on large Oracle
servers with dozens of applications and Oracle databases to keep any single
application from "hogging" all of the processing power. The downside, of
course, is that one application may suffer CPU enqueues (as evidenced by the "r"
column of vmstat output).
Remember, CPU affinity is O/S specific, where you tell the
OS to route specific classes of tasks to specific processors:
- Solaris - You can create a processor set:
- Linux - You use the Linux processor schedule
Oracle also has some hidden parameters that enable/disable
CPU affinity, but YOU MUST get the consent of Oracle Technical support before
altering an undocumented parms:
Within the server, all tasks are queued to the CPUs
according to their dispatching priority, and the dispatching priority is
commonly referred to as the nice value for the task. Those tasks with a low nice
value are scheduled ahead of other tasks in the CPU queue, while those tasks
with a high nice value are serviced later.
In emergency situations where you cannot immediately get
more CPUs, you can assign a very low dispatching priority to the Oracle
background process, causing them to get CPU cycles ahead of other tasks on the
This will ensure that Oracle gets all of the CPU that it
requires, but it will slow down any external tasks that are accessing the Oracle
database. To do this, the systems administrator can alter the CPU dispatching
priority of tasks with the UNIX nice or priocntl commands. The
UNIX nice command is used to change dispatching priorities, but these
numeric ranges vary by operating system. In general, the lower the nice value,
the higher the priority.
Fallacies of Oracle virtualization
general fallacies about the hazards of vmware consolidation include some common
Fallacy: Single point of failure
- Properly configured, none of these
architectures suffers any a single point of failure. Today's hardware has
fully-redundant everything, and with geographical data replication (Streams,
Dark Fiber RAC), and hardware-related failures are becoming quite rare.
Fallacy: Rogue applications can
"hog" a centralized computer - Also, the
segmentation of large computers into smaller, fully isolated slices had been
done successfully for decades, and the system administrator has the ability to
"fence" RAM and dedicate CPU's to specific applications. (Using CPU affinity,
the "nice" command, setting cpu_count and
vmware solutions provide a similar solution for mixed OS environments.
Is Oracle vmware right for my shop?
Oracle vmware is designed primarily for multi-OS shops and
it's not one of the best solutions for partitioning hardware resources within a
all-Linux environment (see CPU affinity and the "nice" command).
Single point of failure - Consolidating diverse
platform applications onto a single server imposes a single point of failure
and the DBA must ensure that the server is fault tolerant with fully
redundant CPU, RAM and disk.
vmware overhead - Also, we must remember that
Oracle vmware imposes some overhead, and a savvy DBA will always perform a
workload benchmark using other alternatives (containers,
para-virtualization) before choosing Oracle vmware. See Dr. Scalzo's
Benchmarking" for details on performing valid tests of Oracle
environments with real-world workloads.
The main drawback of Oracle vmware is the hardware overhead.
The Oracle vmware overhead is primarily a RAM strain, the overhead from caching
VM request and processing them correctly within each virtualized
server being hosted. Remember, the overhead of virtualizing everything can be quite
large and your server must be able to handle the load of each hosted virtual server
and the overhead of the virtualization process.
Here are my notes on monitoring a VM server for
monitoring RAM paging
for CPU enqueues.
A history of Oracle vmware
In early 2005, Oracle has announced that their latest
version of Oracle
VMWare will come pre-loaded with both Linux and Oracle, making it easier
than ever to run Linux on a MS Windows server.
At Oracle OpenWorld 2007, Oracle announced
vmware-ready software, causing a decline in
vmware stocks and raising ORCL
shares. The Oracle VM software can be downloaded free, and it's based on
the Xen open-source hypervisor product.
As of 2007, Oracle vmware is limited to Intel platforms,
and Oracle VM will support only Linux and Windows servers. Oracle VM also
offers a GUI management console (HTML-based) to allow easy management of both
the overall OS and the virtual machines running under the master OS.
Related Oracle vmware notes
Here are my related stories on Oracle vmware: