As with Linux, it is safe to assume a virtual
server host will have multiple processors and lots of memory, also
most likely greater than 4 GB. Thus, you need to go with 64-bit
Windows server editions unless you face some hardware driver issue
that prevents this choice.
While I like Windows 2000 Server as much as the
next guy and feel that it is a great candidate for being my virtual
server host operating system, I nonetheless realize it is 7+ years
old and getting a wee bit long in the tooth. Actually, the biggest
problem is getting drivers for newer hardware on this platform. So
Windows 2003 Server is really the only way to go and 64-bit
Enterprise Edition Release 2 is the most highly recommended.
To improve I/O for file system based Oracle data
files, Windows offers a little known and seldom used option that can
yield between 50-150% performance improvements in standard database
benchmarks like the TPC-C by simply changing the Windows registry
setting as follows:
What this does is set the operating system to
disable last access update for directories and files on this
Windows server, which translates into radically reduced total I/O.
Since the Oracle background processes are accessing the data files
every 3 seconds and have their own headers with timestamps within
them, why spend I/O resources to update time attributes for files or
directories?
Some other common Windows registry tweaks for
database servers include:
-
Disable 8 dot 3 Name Creation - This setting
controls whether MS-DOS compatible 8.3 file names should be
generated on NTFS partitions. Disabling this feature can increase
the performance on high usage partitions that have large amount of
files with long filenames. Setting this option also toggles
whether to permit extended characters to be used in 8.3 filenames.
-
Enable a large size file system cache This
entry controls whether the system maintains a standard size or a
large size file system cache. Enabling a larger cache makes sense
for networked database servers with sufficient memory.
-
Disable paging of the kernel code - This entry
controls whether the user and kernel mode drivers and the kernel
mode core system code itself can be paged. Disabling the paging of
kernel code makes sense for database servers with sufficient
memory.
-
IO Page Lock Limit - This entry controls the
maximum amount of RAM that can be locked for I/O operations. The
default minimizes RAM usage. An I/O intensive system could benefit
from larger buffer sizes. Caution: setting this parameter too high
can result in slower performance. Set it in increments and see how
it affects your system
And whose corresponding recommended registry
settings are as follows:
-
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Control\FileSystem\NtfsDisable8dot3NameCreation = 1
-
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Control\FileSystem\NtfsAllowExtendedCharacterIn8dot3Name = 0
-
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Control\SessionManager\MemoryManagement\ LargeSystemCache = 1
-
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Control\SessionManager\MemoryManagement\ DisablePagingExecutive=1
-
HKEY_LOCAL_MACHINE\System\CurrentControlSet\
Control\SessionManager\MemoryManagement\
-
IoPageLockLimit = N, where N is chosen as
follows:
-
if RAM <= 32MB then
-
IoPageLockLimit = 512
-
if RAM > 32MB then
-
IoPageLockLimit = 4K
-
if RAM > 64MB then
-
IoPageLockLimit = 8K
-
if RAM > 128MB then
-
IoPageLockLimit = 16K
-
if RAM > 160MB then
-
IoPageLockLimit = 32K
-
if RAM > 256MB then
-
IoPageLockLimit = 64K
Note that I have
included on the books DVD and download website a free Windows to
easily set all these parameters on both local and remote database
server as shown below in Figure 3.
Figure 3: Windows Registry Settings
Obviously, installing anti-virus and
anti-spyware software on the virtual server host is totally
unnecessary because all it is going to do is run the operating
system and hypervisor so that it can run clients. There will
generally be very little direct use of this machine, except perhaps
by the administrator during routine maintenance operations such as
OS patches and backups.
Finally, I want to recommend that readers
consider the DXtreme for Windows product line from InovaWave (www.inovawave.com).
DXtreme augments the host operating system with a predictive
optimization engine that can yield truly amazing results and the
Lite version for laptops/notebooks is under $200. They claim many
benefits, including:
-
Increased number of virtual machines per server
-
Increased performance of virtual machines and
applications
-
5X improvements for streaming reads
-
7X improvements for streaming writes
-
25X improvements for random reads/writes
Their web page explains their various product
offerings quite nicely via the table copied on the following page
(Table 2). Basically, they offer products for machines ranging from
laptops/notebooks to very large servers. And in all cases, their
product simply makes the streamlined host operating system better at
hosting virtual clients, especially those with lots of I/O such as
databases. Chapter 8 of this book will include some performance
comparisons done using this amazing product.
Quick Reference
Below is a summary of the recommended host
optimizations:
Windows:
-
Version
-
64-bit
-
Windows 2003 Enterprise R2
-
Registry (use my freeware program to update)
-
Disable last access update
-
Disable 8 dot 3 name creation
-
Enable large size file system cache
-
Disable paging of kernel code
-
IO Page Lock Limit >= 16K
-
Remove non-essential software components
-
Disable non-essential background
processes/services
-
No anti-virus or anti-spyware programs
installed
-
Buy DXtreme virtualized server IO
enhancement software
Conclusion
In this chapter, we looked at how to best
configure our centralized host and its subsystems in order to
maximize database performance. The goal was to hit the center
bulls-eye in order to score the most points, which meant to
optimize the host first and foremost. All of these techniques should
be considered as best practices and liberally implemented across all
your host machines for the benefit of all their guest operating
systems. The cost to implement each of these concepts is relatively
small, but both their individual and cumulative performance impacts
are well worth the trouble.
This is an excerpt from
Oracle on VMWare:
Expert tips for database virtualization
by Rampant TechPress.