Running vSphere 4.0 Enterprise.
I have a windows 2003 R2 SP2 virtual machine with 2 CPU and 3GB memory allocated. This server runs reports and is heavily used for about 1/2 hour per day. Otherwise it is essentially idle.
We are seeing 60%-100% slower memory read/write benchmarks compared to the physical box it came from. I tried allocating all of the memory to that machine as a test and did not see any real improvement.
Performance graphs show that after about 10 minutes of the memory test, consumed memory is higher than active.
Is there any documentation available for tuning memory performance? Any tips?
Are you running HW version 7 on the guest?
You will find you get better performance running version 7 over Version 4. Upgrade the HW version if you are running 4
What is the memory speed of the Host? What is the memory speed of the older physical Server?
If there is a larger dislocation on memory speeds then you will see slower performance.
Are you running Server 2003 x32 or x64? 64-Bit OS will allow better memory utilization and performance.
If the application is not effectivly using the avaiable memory and Paging instead then you are going to the SAN for paging operations.
I am not sure about the SAN on the backend, but unless you are using a Big Iron Symmetrix\V-Max or similar config then disk access willl be much much slower than Memory operations.
On a physical server your page file is probably on local 15K SAS\SCSI drives. These may be running Write\Read Cache on the card so the performance is much faster and you do not notice the application coding issues. I don't know the app, but getting it to utilize memory better is probably the best option.
If you can move the page file to a new Disk that has faster performance this this will also help.
The SAN is an IBM DS 5020.
Swap files are kept with the virtual machines and in this case the page file is large enough. I believe the problem is the application itself since it's whown to have java memory leaks. Unfortunately it's a canned program that we cannot modify.
All your suggestions are good and gave me some things to check out. What I'm looking for now is the Advanced setting that determines how big a chunk of memory is given to a requesting virtual machine. I believe it's under Advanced --> mem --> Mem.ReallocChunkSize but I'm having trouble finding documentation on that.