This is the beginning a new series of blog posts that
explores the strategies that VMware ESX employs to manage machine memory,
focusing on the ones that are designed to support aggressive consolidation of virtual
machine guests on server hardware. Server consolidation is one of the prime
cost justifications for the use of VMware’s virtualization technology. Typical
rack-mounted blade servers that are deployed in data centers contain far more
processing power than most application servers require. From a capacity
planning perspective, it is simply not cost-effective to configure many server
images today to run directly on native hardware.
Virtualization software permits server resources – CPUs,
memory, disk and network – to be carved up into functional sub-units and then
shared among multiple tenants, known as guest
machines. Aggregating multiple server images onto blade servers using
virtualization provides compelling operational benefits, including rapid recovery
from failures because it is so quick and easy to spin up a new guest machine
using VMware. With current generation processor, disk and networking hardware
that was designed with virtualization in mind, guest machine performance
approaches the performance of the same applications running on native hardware,
but only so long as the virtualization Host itself is not overloaded. If the
virtualization host is not adequately provisioned, however, performance issues will
arise due to contention for those shared resources.
Diagnosing performance problems in the virtualization
environment can, unfortunately, be quite complicated. This is partly due to the
fact that the configuration itself can be quite complicated, especially when a
typical VMware Host is managing many guest machines. In addition, there are
often many VMware Hosts interconnected to a shared disk IO farm and/or
networking fabric. When any of this shared hardware infrastructure becomes
overloaded and performance suffers, the task of sorting out the root cause of
this problem can prove quite daunting.
The focus of this series is on the impact of sharing
physical memory, or RAM. To support aggressive server consolidation, the VMware
Host grants physical memory to guest machines on demand. By design, VMware
allows physical memory to be over-committed,
where the overall amount of virtualized physical memory granted to guest
machines exceeds the amount of actual machine memory that is available.
VMware also looks for opportunities for guest machines to share hardware memory
pages when the contents of any two (or more) pages are identical. Identical
guest machine pages, once identified, are mapped to a single, common page in
RAM.
The outline for this series of blog posts is as follows. I
begin with a brief introduction to virtual memory management concepts. This is
pretty much a basic review of the topic and the terminology. If it is an area
that you already understood well, you should feel comfortable skipping over it.
Next, I discuss the specific approach to virtual memory
management used in VMware. In this section, I will stick to information on virtual
memory management that is available from published VMware sources. Much of the
existing documentation is, unfortunately, very sketchy.
Finally, I will analyze a case study of VMware under stress.
The case study vividly illustrates what happens when the VMware hypervisor
confronts a configuration of guest machines that demands access to more
physical memory addresses than are available on the underlying hardware
configuration.
The case study analyzed here proved very instructive. It
provides an opportunity to observe the effectiveness of the strategies VMware
employs to manage virtual memory and the potential impact of those strategies
on the performance of the underlying applications running on virtualized
hardware whenever there is significant contention for RAM.
If you are ready to start reading, the first part of this series of blog posts is here.
If you are ready to start reading, the first part of this series of blog posts is here.
Comments
Post a Comment