Consultor Eletrônico



Kbase P153991: Performance considerations when running OpenEdge databases/applications on a virtualized environment
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   3/14/2011
Status: Unverified

GOAL:

Performance considerations when running OpenEdge databases/applications on a virtualized environment.


GOAL:

Performance considerations when running OpenEdge databases/applications on VMWare


FACT(s) (Environment):

All Supported Operating Systems
Virtualization Technologies
Progress/OpenEdge Product Family

FIX:

The top two areas of performance impact on VM performance are:

- memory; specifically mis-configuration

- disk and file fragmentation

For both areas you need to take into account both the host and the guest environments...fixing only one does not always solve the problem.


- MEMORY

Memory is pretty straight forward...you run out of real or virtual RAM and the guest or host operating system goes to the page file, slowing the system by as much a thousand-fold. If you are in a consistently low memory situation, this is called "thrashing", which means that applications are being swapped out to the paging file even if they are active, causing a huge bottleneck as the system tries to page in and page out all the running applications. Thrashing in the guest OS is particularly bad since the page file is not some special file on a special area of disk...it's just some blocks in a large file in the host OS (see below) and is treated no differently at the host OS level, no matter where the guest OS thinks it really is.

Solution:
Make sure you have provided sufficient memory to the guest OS for normal operation plus some kind of a pre-determined high-water mark.
Also ensure that there is sufficient memory available on the host so that the VM process itself (which contains all the guest OS and application memory) is not being paged.
It has been experienced situations where both the VM guest *and* host are paging to disk, decreasing the system performance to almost nothing.

- DISK

All file management methods (FAT, NTFS, ext3, etc) allow for fragmentation of disk file structures to occur. This is a design feature to allow for real-time allocation of disk space no matter where the disk space needs to come from. Unfortunately, over time, the structure of the files on the disk becomes dis-contiguous, and when you need to load a fragmented file, the disk may have to perform dozens, hundreds, or even thousands of seek/reads to get all the information you wanted loaded into memory. The more seek/reads required, the slower the response to the OS. Larger files are more prone to fragmentation because there is rarely sufficient contiguous space on the disk in order for an addition to a file to be placed right beside the current location.
VMWare disk files are just regular files on your host OS. As the guest writes or updates files into the VM disk files, they grow in size.
If there is no contiguous space available to write the update, the file becomes fragmented. Note that now every time disk activity is performed in the guest OS, even if the guest OS has no fragmentation at all, the performance is decreased because the host OS has fragmented the VMWare disk file itself.
Now if both the guest OSs files and the host OSs VMWare disk files are fragmented, there is serious degradation in performance.

Solution:
When you create the VM instance, you can specify that you want to pre-allocate all the virtual disks into contiguous space. This requires the full disk space available in a contiguous block (eg. a 100Gb EIDE disk for the VM requires 100Gb of free and contiguous disk space on the host OS) in advance, but will create files that will never fragment.
If the VM is already created, there is a process you can use to de-fragment the guest and then the VMWare disk files on the host to increase performance. Not sure which version of VM they are using but it's an easy look-up in VMWare support to get the process.

- OTHER ADVANCED TUNING

There are other point to consider when it comes to performence consideration on virtalized environments, like pre-allocating all the required memory to the VM instead of letting VM manage it for you, settings for virtual write caching, etc, etc, etc. There are also tuning procedures for the host OS that you may want to consider, like turning off processes or services that are not required, and defragmenting the registry fi.les and the pagefile (Windows host only).
For high performance requirements, turn off paging in the guest OS altogether (CAUTION! This is advanced tuning and greatly increases the risk of the guest running out of memory and crashing in a nasty way, but it sure clicks along nicely!)
.