An important thing about my work-in-progress virtualized workstation setup is that I've created the Mac OS X VM using my very own hard drives, hooked as raw devices (RDM: raw device mapping). So I can boot exactly the same OS directly from the hard drive, or from ESXi into a virtual machine. Quite convenient when the time comes to make comparisons. And now, I can boot the VM with ATI Radeon graphics card plugged in passthrough mode thanks to VMware DirectPath I/O and some tweaking.
While it's not enough to make a workstation (still miss a keyboard/mouse in passthrough), it allows some benchmarks. I've ran XBench on the VM and on the same OS booted natively from the hard drive.
The VM is configured with only 4 CPU. the Mac Pro sports a quad core Xeon capable of hyperthreading, so when Mac OS X boots natively it sees 8 CPU. It might explain the 50% difference on the Thread test, but that will require further testing.
The final result is not good at all. I understand very well that virtualization has a performance cost, but if I want a powerful virtualized workstation I need a setup that will waste as few resources as possible.
Quartz Graphics and User Interface tests show that "desktop" graphics are well supported, but the OpenGL test results are horrendous. With a performance loss of 87%, it predicts much trouble with games. According to this very simple benchmark, the VMware passthrough mode for graphics card seems to be very bad compared to what can be seen on XEN for example.
To be honest, having my hard disks accessed directly via RDM, I though I would have a 10-15% penalty. The 46% drop for sequential access surprises me. As for the GPU, the OpenGL results are so bad I'm wondering if the graphics card is properly passed through. May be some features are just dropped in the process. By the way, the virtualized Mac OS X won't load the screen color profile. May be it's related to the pseudo-VGA screen attached to the VSphere console. Unfortunately I can't get rid of this pseudo-VGA screen yet. Until I find a way to pass keyboard and mouse through to the VM, I need the VSphere console.
Results | 259,39 | 127,18 | -50,97 % | ||
System Info | |||||
Xbench Version | 1,3 | 1,3 | |||
System Version | 10,6,8 | (10K549) | 10,6,8 | (10K549) | |
Physical RAM | 24576 MB | 12288 MB | |||
Model | MacPro5,1 | VMware7,1 | |||
Drive Type | WDC | WD1001FALS | WDC | WD1001FALS (ATA) | |
CPU Test | 205,42 | 200,27 | -2,51 % | ||
GCD Loop | 314,75 | 16,59 Mops/s | 305,66 | 16,11 Mops/s | -2,89 % |
Floating Point Basic | 182,81 | 4,34 Gflop/s | 177,44 | 4,22 Gflop/s | -2,94 % |
vecLib FFT | 121,5 | 4,01 Gflop/s | 119,14 | 3,93 Gflop/s | -1,94 % |
Floating Point Library | 385,38 | 67,11 Mops/s | 374,17 | 65,15 Mops/s | -2,91 % |
Thread Test | 954,74 | 477,33 | -50,00 % | ||
Computation, 4 thr. | 989,65 | 20,05 Mops/s | 517,69 | 10,49 Mops/s | -47,69 % |
Lock Contention, 4 thr. | 922,22 | 39,67 Mlocks/s | 442,8 | 19,05 Mlocks/s | -51,99 % |
Memory Test | 452,72 | 370,19 | -18,23 % | ||
System | 493,4 | 452,74 | -8,24 % | ||
Allocate | 746,78 | 2,74 Malloc/s | 877,63 | 3,22 Malloc/s | 17,52 % |
Fill | 352,03 | 17116,62 MB/s | 287,47 | 13977,29 MB/s | -18,34 % |
Copy | 526,18 | 10867,96 MB/s | 497,95 | 10285,00 MB/s | -5,37 % |
Stream | 418,24 | 313,1 | -25,14 % | ||
Copy | 422,51 | 8726,77 MB/s | 321,23 | 6634,92 MB/s | -23,97 % |
Scale | 395,84 | 8178,02 MB/s | 303,88 | 6278,02 MB/s | -23,23 % |
Add | 438,89 | 9349,24 MB/s | 328,71 | 7002,18 MB/s | -25,10 % |
Triad | 417,99 | 8941,89 MB/s | 300,37 | 6425,59 MB/s | -28,14 % |
Quartz Graphics Test | 315,19 | 300,47 | -4,67 % | ||
Line [50% α] | 239,24 | 15,93 Klines/s | 232,29 | 15,47 Klines/s | -2,91 % |
Rectangle [50% α] | 314,61 | 93,93 Krects/s | 296,25 | 88,45 Krects/s | -5,84 % |
Circle [50% α] | 264,41 | 21,55 Kcircles/s | 251,89 | 20,53 Kcircles/s | -4,74 % |
Bezier [50% α] | 279,29 | 7,04 Kbeziers/s | 263,55 | 6,65 Kbeziers/s | -5,64 % |
Text | 875,44 | 54,76 Kchars/s | 836,28 | 52,31 Kchars/s | -4,47 % |
OpenGL Graphics Test | 306,01 | 39,01 | -87,25 % | ||
Spinning Squares | 306,01 | 388,19 frames/s | 39,01 | 49,49 frames/s | -87,25 % |
User Interface Test | 463,72 | 405,19 | -12,62 % | ||
Elements | 463,72 | 2,13 Krefresh/s | 405,19 | 1,86 Krefresh/s | -12,62 % |
Disk Test | 97,42 | 72,35 | -25,73 % | ||
Sequential | 176,21 | 94,27 | -46,50 % | ||
Uncached Write [4K blk.] | 180,38 | 110,75 MB/s | 167,14 | 102,62 MB/s | -7,34 % |
Uncached Write [256K blk.] | 177,43 | 100,39 MB/s | 80,84 | 45,74 MB/s | -54,44 % |
Uncached Read [4K blk.] | 149,41 | 43,73 MB/s | 51,88 | 15,18 MB/s | -65,28 % |
Uncached Read [256K blk.] | 207,16 | 104,12 MB/s | 208,09 | 104,59 MB/s | 0,45 % |
Random | 67,32 | 58,7 | -12,80 % | ||
Uncached Write [4K blk.] | 21,3 | 2,25 MB/s | 19,86 | 2,10 MB/s | -6,76 % |
Uncached Write [256K blk.] | 507,04 | 162,32 MB/s | 300,75 | 96,28 MB/s | -40,69 % |
Uncached Read [4K blk.] | 159,73 | 1,13 MB/s | 96,75 | 0,69 MB/s | -39,43 % |
Uncached Read [256K blk.] | 235,97 | 43,79 MB/s | 242,2 | 44,94 MB/s | 2,64 % |