Category Archives: Developer Machine

Mac OS X, Bootcamp, Virtual Machines and SSD Performance

I have a 17″ Macbook Pro configured with a bootcamp partition. I usually do my daily development work on this when I have to go on site at a client. I work with Visual Studio 2010 building web apps and desktop tools.

As soon as I bought the laptop I replaced the stock 750GB 5400rpm drive with a 480GB OWC SATA3 SSD. I also added a data doubler kit from MacSales and replaced the DVD drive with a 250GB Corsair SATA2 SSD.

After some hair pulling and firmware upgrades to the Macbook Pro I was able to get some great benchmark speeds on the OWC SSD under Mac OS X, but under Windows the speeds were only averaging SATA 2 speeds.

These are the Mac OS X benchmarks:

17″ MacBook Pro – Running Lion OS

OWC Mercury Electra 6G 480GB – Mac OS X

The performance was as expected – Max Read Avg. 520MB/s and Max Write Avg. 469MB/s. These results are what you’d expect from a SATA 3 SSD.

Next I booted into bootcamp, running Windows 7 – 64 bit (Bootcamp v3.3) , and expected to see some similar results. But this was not to be. This is what I found instead:

OWC Mercury Electra 6G 480GB – Windows 7 Pro (Bootcamp v3.3 64 bit)

As you can see, the throughput seems to be capped around the 240MB/s – 250MB/s – for both Reads and Writes. Quickbench and ATTO Disk Benchmark show this very consistently, however there is a bit more variance with Crystal Disk Mark and AS SSD Benchmark. I put these differences down to variations in the tools and possibly other disk activity. But you get the picture. Something isn’t right.

After a lot of hunting around the various Apple and OWC/Macsales forums and blogs etc… I couldn’t find anyone who had noticed this difference in performance. Eventually after opening an email dialog with the OWC staff, they determined that the bottleneck is the Apple Bootcamp drivers. I was running 64bit windows with bootcamp v3.3, so I’m not sure if it was a 64bit issue and switching to 32 bit Windows would have produced a different result. I had 16GB RAM so didn’t want to forego the memory benefits of running a 32bit OS.

**Edit** I see now that Apple have release Bootcamp v5.0 which is 64bit only for Windows 7 & 8. These SATA driver issues might well be fixed now. I haven’t tested these combinations though.

So what to do now? I’ve got an awesome laptop with a super fast hard drive and I want to get the most out of it… in both Mac OS X as well as Windows.

The answer is Virtual Machines!! My hypothesis was that if the Mac OS X drivers were heaps faster than the bootcamp drivers, I could probably run Windows in a virtual machine, under either Parallels Desktop or VMware Fusion with a better result – despite a virtualised hard drive – than natively on the bootcamp partition. Would I be proven right!!?? Lets see!

For the purpose of these tests I used the Windows Experience Index (WEI) as the best way to compare all the different permutations of VM & bootcamp etc… 

I used Parallels Desktop version 7.0 and VMware Fusion version 5.03. In all cases each virtual machine was given 4 processors and 8GB of RAM.

First of all, lets start with Windows 7 (64 bit) running under Bootcamp v3.3:

This is effectively our baseline benchmark. A 6.9 overall, with a 7.0 on the primary hard disk. Note that memory and CPU are pretty good too.

Next step is to see what scores I can get by running a VM, that is attached to the bootcamp partition – effectively running a native disk.

Parallels with Native Bootcamp Partition – Win 7 x64

This is Parallels running the native bootcamp partition. Disk speed has already jumped to a 7.6 despite a drop to 5.9 for an overall score. Not bad. Lets see what Fusion can do:

VMware Fusion with Native Bootcamp Partition – Win 7 x64

Fusion gives us a slightly better score overall, but the hard disk rating has dropped to 7.1. Bummer! Look at those CPU and memory scores though. They are doing better than our baseline, booting natively into the bootcamp partition!!

Next I created 2 new virtual machines, one each in Parallels and Fusion, but this time running Windows 8 (64bit).

Parallels with Windows 8 x64 in VM – Virtual Disk

Wow! Look at that… an 8.4 disk score! CPU and memory are still about the same, but the overall score of 5.9 has dropped as a result of the poor graphics performance.

Fusion with Windows 8 x64 in VM – Virtual Disk

VMware Fusion was just pipped at the post on this one. Disk score of 8.3 is nearly the same, but the graphics lets it down again. However we got a bump on the memory score!

So what does all this mean?? What did I choose to go with?

Well, despite the slightly slower score, I chose VMware Fusion. Why did I do this? I have been a long time user of VMware Workstation and I absolutely love it and couldn’t live without it for my day to day development activities. The two products are compatible with each other so if I need to migrate existing virtual machines I have across to Fusion, I can do that easily. I know that Parallels has some nice import features too, and I’ve used them successfully too.

But in the end it was close enough that I don’t think it would really matter. I know this is a long post, but hopefully it’s been helpful for you if you’ve been wondering about whether it’s worthwhile running Windows VM’s under Max OS X instead of going the bootcamp route. In my opinion, it is absolutely not only a viable option, but a performant one too. I have now deleted my bootcamp partition, migrated it across to a Fusion VM for archive purposes, and I am in the process of building up Fusion VM with Windows 8 x64, Visual Studio 2012 and SQL Server 2012 to do all my .Net development. So far it’s working great.

My Ultimate Developer Rig – Part 2

UPDATE: Apologies for taking so long to finish this post!

Click here to read Part 1 first.

So how does it run?? Smokin’ is all I’ve got to say! This is an awesome beast of a machine. I’m sure with some more money, time and attention to overclocking detail I could get even more out of her, but I’m happy with what I’ve achieved.

Windows Experience Index (WEI)
This is what you’re really wanting to see isn’t it? Well here it is:

I’m not surprised by the 7.8 on the graphics card as it’s nowhere near a top line card, but I was by the Processor score. Maybe you need something even more to pull a 7.9 there. But the Primary Hard Disk score of 7.9 was exactly what I was after.

So lets break it all down a little…

CPU Overclocking
Here is a look at the system under a full load with the CPU overclocked to a speedy 4.72Ghz.

Not a bad increase up from the stock 3.40Ghz. Remember that while I’m using the Corsair Water cooling unit, it is still using fan based cooling, not refrigeration based chilled water. I tried pushing to 4.80Ghz but the system wasn’t stable. It would POST and boot into Windows, but usually after about 5mins it would crash and blue screen. I ran Core Damage overnight as shown with Normal Priority threads @ 4.72Ghz and the system was rock solid. Core temps were around the 70C mark.

So I know that I have a solid stable system that is nice and fast, and doesn’t get too hot. It’s interesting to see that even though I bought so called “Value” labelled RAM kits, they performed brilliantly, and didn’t impact the WEI score at all.

SSD Performance
I ran some tests using a number of different tools in order to get the most accurate view of what is really going on with the RAID 0 setup. The following tools made up the list:

  • AS SSD Benchmark v1.6.4067
  • ATTO Disk Benchmark
  • CrystalDiskMark v3.0.1
  • HD Tune Pro v4.61

Breaking the 1,000MB/s barrier was my goal – I had thought this was possible in theory if I used RAID 0; but now I’ve proved my hypothesis. Niiiice! 🙂

I’ve been running the system now for well over a year and a half and it’s never let me down. I’ve subsequently moved to SSD’s on all my other systems and it is just heaven.

One last thing…
With that in mind though, just remember that all hard drives DO fail at some point. And SSD’s are no different… except when they fail, they die stone cold dead! There is no tell tale clicking sign or funny data reads etc… You just go to use it one day and it’s dead. So make sure you have a good, reliable daily backup (and [offsite] backups of your backups!). Even more importantly, make sure you have tested your backups and can recover them successfully.

My Ultimate Developer Rig – Part 1

The time has come for me to replace my old desktop PC with a new whiz bang developer rig. The old system has the following specs:

Intel Core 2 Duo 2.13Ghz
4GB RAM
120GB SATA 2 OCZ SSD
300GB SATA 2 Western Digital Velociraptor 10,000RPM
750GB Seagate 7200RPM
Windows 7 Ultimate x86 (32bit)

It ran well for the most part. The SSD was a great interim measure to give me some extra speed until I could afford the big upgrade with a completely new machine. At the time I built this original machine I was more concerned with how quiet the machine was, so I had a low end fanless graphics card along with a tonne of sound absorbing audio foam in the case. It was nice and quiet but I couldn’t play any decent sized videos.When I tried to use Visual Studio 2010 with Resharper 5 (great tool!!!) on my new project I was working on, I found myself waiting up to 10secs for intellisense to pop up. This became soooo frustrating, so it was time to upgrade.

I was spurred on by both Scott Hanselman and Jeff Atwoods articles on building the ultimate developer rig as well as going for a 7.9 WEI rating (Windows Experience Index):

http://www.hanselman.com/blog/TheCodingHorrorUltimateDeveloperRigThrowdownPart1.aspx

http://www.codinghorror.com/blog/2007/07/building-a-pc-part-iv-now-its-your-turn.html

http://www.hanselman.com/blog/UltimateDeveloperPC20Part1BuildingAWEI79AndRFCForBuildingAGOMGodsOwnMachine.aspx

I deliberately waited until the prices of various items I wanted had come down bit so that I could keep the budget under AUD$3,000. Ideally the core machine would be under AUD$2,000 and then I had plans to add a 4 disk RAID5 Array. I wanted speed, speed and more speed.

The first and highest priority component was the main hard drive. Sata 3 has recently come out so I definitely wanted a good quality motherboard that supported RAID 0 (striping) on the Sata 3 controller, and I wanted to have the fastest SSD’s that I could get my hands on.

Enter the new OCZ Vertex 3 SSD.

OCZ VERTEX 3 120GB SSD SATA3 550/500 R/W/MB

These puppies are simply awesome. They are fast, silent, and have a new controller (you can google for tech details if you want). I bought 2 so I could set them up in RAID 0 for twice the throughput (does this really work? Checkout Part 2 for disk benchmarking results).

Next is a fast CPU. I went for the new Intel Core i7 2600K – note the ‘K’ means the clock multiplier is unlocked for easier, better and awesome overclocking.

INTEL CORE i7 2600K 3.4GHz 8MB

I also went for a new video card that would have a number of options for output connections, plus good clock speed and RAM for good framerates when watching HD video. I found this little baby:

XFX HD6870 900M PCIe/1GB/DVI/HDMI/DP

This is a great graphics card because it can support up to 5 monitors!!!! It has 2 x DVI, 2 x Display Port, and 1 x HDMI. Great Stuff!

Because I want to use this as my developer machine, I will be running virtual machines etc.. and doing all sorts of audio/video encoding, watching full HD video, all at the same time I went for 16GB RAM (4 x 4GB), so I have plenty to play with. With disk I/O being the biggest bottleneck on the system, I just went for budget priced RAM:

GEIL 16GB KIT DDR3 VALUE PLUS C9 1600M

I want to overclock the CPU to get maximum speed out of it, so I wanted a decent motherboard with a good price point. It had to have Sata 3, RAID0,1,5, good RAM speed and capacity, and for the future USB 3.0:

ASUS P8P67 LE B3 DESKTOP MOTHERBOARD

This motherboard ticks all these boxes, plus it has the new Sandy Bridge Chipset so I know I’m going to get the most out of the Core i7 CPU I’m going to put in it.

If I’m going to be overclocking it I want a rock solid PSU so I went with Corsair:


CORSAIR 750W HX-750W

Lastly, I want to keep everything nice and cool, especially with the extra heat that this CPU is going to be generating when overclocked. In the past I’ve gone for large heat sinks and CPU fan setup, and extra case fans and the like, but I wanted something nice and minimalist this time. So the only choice was a Corsair Watercooling Kit:


CORSAIR COOLING HYDRO H70 CPU COOLER

This is so easy to install, and works perfectly. One word of advice though, make sure you attached the mounting backing plate on the motherboard before you screw the motherboard into your case!! :o)

Now lastly we need to put all these bits in a case. I just wanted a decent full size ATX case at a good price. It had to have good airflow and easy to use quick release HDD bays. Enter this one:


LIAN-LI LANCOOL PC-K58 CASE BLACK

So, what was the damage for all these goodies? Here’s a summary of all the parts and their prices and quantities:

Quantity

Price

LIAN-LI LANCOOL PC-K58 CASE BLACK

1

$95.00

CORSAIR COOLING HYDRO H70 CPU COOLER

1

$159.00

INTEL CORE i7 2600K 3.4GHz 8MB

1

$339.00

XFX HD6870 900M PCIe/1GB/DVI/HDMI/DP

1

$197.00

GEIL 16GB (4 x 4GB) KIT DDR3 VALUE PLUS C9 1600M

1

$209.00

ASUS P8P67 B3 DESKTOP MOTHERBOARD

1

$169.00

ASUS DVD RW 24x BK/ +/-/DL/SATA

1

$35.00

CORSAIR 750W HX-750W MODULAR POWER SUPPLY

1

$209.00

OCZ VERTEX 3 120GB SSD SATA3 550/500 R/W/MB (Unit price $329)

2

$658.00

$2070.00

So I’ve come in ever so slightly over budget – well what I was aiming for ideally – so I’m very happy. In the next installment, I’ll post some benchmarking results for the RAID 0 SSD configuration as well as my overclocking results and WEI Score.