The top ten most important features for getting the best Oracle database performance using VMWARE ESX Server and other technologies…
There are a few common myths about virtualizing databases:
* Databases have a high overhead when virtualized: Virtualized Databases can perform at or near the speed of physical systems, in terms of latency and throughput. The virtualization overhead for typical real-world databases is minimal – for VMware ESX Server, we measured CPU overhead to be less than 10%.
* Databases have too much I/O to be virtualized: Databases typically have a large number of small random I/Os, and it is in theory possible to hit a scaling ceiling in the hypervisor layer. VMware ESX’s thin hypervisor layer can drive over 63,000 database I/Os per second, which is equivalent to more than 600 disk spindles of I/O throughput. This is sufficient I/O scaling for even the largest databases on x86 systems.
* Virtualization should only be used for smaller, non-critical applications: The ESX hypervisor is very robust: many customers are seeing over two years of uptime from ESX based systems. In addition, the ESX hypervisor remains stable, even if resources are overcomitted.
There isn’t one quick hit to make databases work well for a wide range of real-world applications – good performance is something that is earned from the long term discipline of focusing the lessons learned from many customer-oriented real-world database workloads, and applying those lessons across the architecture of the hypervisor.
The Nature of Databases
Databases have some unique properties, such as a-large memory footprint. At the outset this can make them slightly more complex to virtualize well. However this has proven to be an opportunity, since we can optimize specifically for these defining properties.
* Large Memory: Databases use large amounts of memory to cache their storage. A large cache is one of the most important performance criteria for databases, since it can often reduce physical I/O by 10-100 fold.
* High Performance Block I/O: Databases read and write their data in fixed, block sized chunks. The I/Os are typically small, and operate at a very high rate on a small number of files or devices.
* Throughput Oriented: Databases often have a large number of concurrent users, giving them natural parallelism and makes them ideally suited to take advantage of systems with multiple logical or physical processors.
* Near Native Performance: Oracle databases run at performance similar to that of a physical system
* Extreme Database I/O Scalability: VMware ESX Server’s thin hypervisor layer can drive over 63,000 database I/Os per second (fifty times the requirement of a typical database)
* Multi-core Scaling: Scale up using SMP virtual machines and multiple database instances
* Large Memory : Scalable memory – 64GB per database, 256GB per host
We are getting ready (or at least entertaining the idea of) to switch to Oracle 11g on RHEL. We understand that this is a very successful configuration in the IT world currently. We are wanting to run this on ESX and will thus be adding additional licensed copies to our environment should this be the final direction.
1. Is this a good fit for VMWare (i.e. are you folks doing it currently?)
2. We will be running EPM (PeopleSoft) on this and we understand that it is fairly intensive model building and data warehousing.
3. We have been told that it will require major cpu and ram but, like everything else, this is generally not the case once you put it on VMWare as you end up seeing how little of it gets used.
We will also be looking at professional help for this implementation should we go down this path so any suggestions you have along these lines would be appreciated too.