How to troubleshoot Linux disk performance on ESXi Virtual Machine

Hi all,

I am running two virtual machines on a brand new Dell PowerEdge T310 server running ESXi 4.0 (fully patched). One of the VM's is Windows XP Pro (long story) and the other is Mandriva Linux 2010.0. We've been having some performance issues on the Linux Vm since day one. At first I thought it was the new hardware or something in the setup of ESXi but having found no problems there I decided to test similar scenarios on the XP machine and found the issue not to exist there.

The problem as I see it is that I can transfer a 500MB file to a share on the XP machine at around 22MB/sec (to or from, similar performance). However, transferring to the Linux machine goes at around 3MB/sec. What's more, copying a file from partition to partition on the Linux machine has about the same performance, 3MB/sec (and sometimes worse.)

I looked at the configuration of both the virtual machines and the disks don't seem to be configured differently, so I ruled out that the problem is with the host. The host can obviously have a VM that performs as expected.

I have looked at /etc/fstab to see if there was anything odd there but I don't see anything out of the ordinary. I ran iotop and saw about 1200 KB/sec reads and writes while copying a very large file from partition to partition, and using about 16% of the IO, but there didn't seem to be anything else there that wasn't a 0.00 B/sec (other than now and then a very quick write to syslog or such).

The one thing I can think of that seems out of the ordinary is when i am running a mv or cp command, it shows in "top" as using 67 %CPU which seems rather high.

Is it possible that CPU speed is the problem? The server has an Intel i3 530 CPU @ 2.93 GHz, with 4MB of cache. I configured this virtual machine with 4 virtual CPU's (the maximum allowed) while the XP VM that is working just fine I configured with only 1 virtual CPU.

Any clues? This is driving us crazy. We run an SQL database on this machine that is about twice as slow on the new hardware as it used to be on a 7 year old Pentium 4 server.

I'd appreciate any help or even just ideas.
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.


first thing that  i would suggest for you is to reset the number of vCPUs to 1 for this machine instead of four and this should certainly give you better speed.

Reason being your linux box thinks it has 4 cpus and is trying to use SMP(symetric multi processing) and as it does not have really four CPUs this task is assigned to the ESX server and that might be causing issues.


edit the VM settings and assign dedicated CPU cores of the ESX server to the VM this should also change the behaviour as this way the instructions for CPU cycles are directly scheduled to the CPU cores.


Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
omniumnetworkingAuthor Commented:
That is insane. I changed the VM to a single processor and my network speeds went up to 30MB/sec and partition to partition speeds up to 87MB/sec.

Thanks for the pointer!


that does sound insane but thats how virtual environment is setup. Unless you dont dedicate or define in the VM settings that the multi CPUs task should be associated with specific cores, ESX would do its own scheduling and this results in the VM thinking its doing SMP and it tries to multi thread the process while ESX kernel is trying to get them done on a single CPU.

in a ideal scenario where you want the VM to behave as a real time multi-cpu system you need to define which CPU core of the ESX should the VM try to hook up to.

It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Linux Distributions

From novice to tech pro — start learning today.