It seems the debate between using a VMDK on VMFS or an RDM still rages when it comes to the question which one is better for performance.
The VMware team has published a lot of evidence in the past that the difference is very minor, in fact difficult to measure accurately and probably unperceivable to customers. Definitely not worth giving up the value of encapsulating a VM.
Published Dec 7, 2007 (on ESX 3.0.1)
Published Feb 13, 2008 (on ESX 3.5)
Let's take a look at some new internal data for vSphere 5.1 that continues to validate that VMDK is the right default choice.
The Test Bed
This data was generated on vSphere 5.1 using the DVD Store test application running mySQL 5.5 which simulates an online e-commerce store. The scale out tests below were configured such that a number of DVD Store virtual machines were placed side by side on the Dell R910 (2x E5620) vSphere host. Additionally, a number of client virtual machines were required to simulate the high numbers of transactions.
These graphs outlines the scaling capabilities of both VMDK and RDM by measuring orders per minute (OPM).
You can see that OPM are nearly identical between VMDK and RDM. In fact, OPM throughput on VMDK was approximately 1% fast than RDM using a single DVD Store instance. The 4VM test demonstrates near linear scaling for both technologies.
Using these graphs we can take a closer look at the difference between VMDK and RDM using the same OPM measure.
Here the application performance achieved is nearly identical (approximately +/- 1%) between VMDK and RDM.
These graphs outline the cycles required per transaction which can be viewed a measure of IO cost per transaction (note: lower is better).
Here we can see that the CPU cost of an RDM is actually slightly higher (though less than 1%) than that of a VMDK for both tests. This dispels the notion that an RDM is significantly more efficient.
(Special thanks to Razvan Cheveresan for his efforts collecting this data)
What you should takeaway from this vSphere 5.1 data, as well as all previously published data, is that there is really no performance difference between VMDK and RDM and this holds true for all versions of our platform. +/- 1% is insignificant in today's infrastructure and can often be attributed to noise. The decision between VMDK and RDM is now one of architecture or functional requirement and without a special need, VMDK should be used by default. It provides all the performance and flexibility you require to virtualize your most critical business applications.