VMs (VMWare, Parallels) and new 2013 Mac Pro for software development

Discussion in 'Mac Pro' started by macrumorsuser10, Dec 23, 2013.

  1. macrumorsuser10 macrumors 6502

    Joined:
    Nov 18, 2010
    #1
    I'm looking at the new Mac Pro for software development and light gaming. I largely program with the gcc toolchain, XCode, and Matlab/R. My current set up is a 2011 MacBook Pro with an i7.

    Will VM software (specifically VMWare Fusion, Oracle VirtualBox, or Parallels) fully take advantage of the new Mac Pro's 6-core (and 8- and 12-core) configurations? For example, if I run Matlab in Win7 in a VM, will the VM benefit from having more cores?
     
  2. dyn macrumors 68030

    Joined:
    Aug 8, 2009
    Location:
    .nl
    #2
    VMware Fusion, Parallels Desktop and Oracle Virtualbox can not use specific cores of a machine. You can assign multiple virtual processors to a vm and thus have a multithreaded vm.

    It is overly complicated in case of Matlab because you can natively install it on OS X. If I recall correctly Matlab is able to take use of GPGPUs.

    Things like clang (which is what you are actually using when running gcc if you've installed Xcode and using the cli tools) can benefit from multicore setups but you may have to tell the compiler to do so (I think with make you have to use -j2 or -j4 if you want 2 or 4 threads; could also be FreeBSD specific though). If you add ccache to that mix things can get flying :)
     
  3. goMac macrumors 603

    Joined:
    Apr 15, 2004
    #3
    Xcode will automatically use all the cores it can find.

    The Clang command line tool I don't think does, but you can either compile multiple classes are once manually, or use an option in make that does so automatically.

    You can't necessary pin VMWare to certain cores, but it will automatically make use of as many cores as you set up a virtual machine to use.
     
  4. maflynn Moderator

    maflynn

    Staff Member

    Joined:
    May 3, 2009
    Location:
    Boston
    #4
    Yes, if you assign more cores to it under the configuration of the VM.

    Food for thought. The base nMP is 1,000 more then the the top end iMac and in both computers you get a quad core processor. While the nMP will be faster you're paying a hefty price. The downside is that you only get 256GB of an SSD (you'll have to upgrade the storage) and no monitor, where as the iMac you have the monitor and get 1TB of storage
     
  5. monkeybagel macrumors 65816

    Joined:
    Jul 24, 2011
    Location:
    United States
    #5
    I use a 2012 Mac Pro for infrastructure design and use VMware Fusion heavily. I also have an Apple 512GB SSD and 128GB RAM. I must say the machine works extremely well for what I use it for. I do not do really any content creation.

    I have a RAID0 array with three 2TB spindles for VM data (disposable) and everything works great.
     
  6. LongSticks macrumors 6502

    Joined:
    Jul 22, 2012
    Location:
    Kent, UK
    #6
    Are you using Civil3d in VM, if so a couple of questions, if that's okay:

    Why fusion over parallels?
    How many cores and how much RAM do you set to VM?
    What GPUs are using?
    What single core CPU speed do you have?

    I use Bentley and Autodesk for infrastructure in Bootcamp at the moment as my current machines are too slow to run them through VM, apart from excel type works. Need to move to MP now, but still trying to decide between cMP and nMP and have been waiting for some real world tests to come out before final decision.
     
  7. monkeybagel macrumors 65816

    Joined:
    Jul 24, 2011
    Location:
    United States
    #7
    I do not use any of those pieces of software unfortunately so I can't give you any performance comparison.

    I use VMware over Parallels mainly because of familiarity with the products and the quality of VMware products. From what I have witnessed personally, VMware Fusion has proved more stable than Parallels. I have never, that I recall, had a VM crash and lose its contents. I have had the window manager go down, but if that is reopened the VM is right where it was.

    The processors I am using are two 3.06 Xeon X5675 processors. GPU is an Apple Radeon 5870. The entire machine including SSD and processors are stock Apple configured. I have only added RAM and three spindles.
     
  8. dyn macrumors 68030

    Joined:
    Aug 8, 2009
    Location:
    .nl
    #8
    Just to clarify this a bit more (many people are misunderstanding this): You can not assign any core to Fusion or a specific vm. Fusion will use all the cores available like any other application such as Xcode would do too. What you can do per vm is assign a number of virtual processor cores (it used to be called virtual CPU or vCPU). VMware recommends setting half the amount of physical cores (no hyperthreading "cores"!) as the max. For example: in case of a quad core cpu you can only assign a max number of 2 virtual processor cores to a vm. Assigning too many will cause quite significant performance problems in both the vm as well as OS X.

    Generally speaking: start low with whatever you assign to a vm, the defaults are good enough. If this isn't enough crank it up little by little. Most vm's do not need to be assigned heaps of virtual processor cores and memory. If you assign as least as possible you can use whatever is left for OS X itself or assign a huge amount of virtual processor cores/memory to 1 specific vm. Lots of people are getting this wrong and assign way too much to a vm causing all sorts of significant performance problems.

    The 1TB storage may sound attractive but only if you want vast amounts of storage and don't care about speed since that 1TB of storage will be an ordinary hdd. If you require speed (which most developers do) you still need to upgrade that 1TB drive to either a Fusion Drive or an SSD. For the latter the costs are no different than for the SSD upgrades in the Mac Pro.

    The iMac also has to omit on the GPU side (it only has one and it is not as powerful as the ones in the Mac Pro). Also, the iMac has 1 NIC, 2 Thunderbolt ports (on 1 bus), 3 USB3 ports and no HDMI whereas the Mac Pro has 2 NICS, 6 Thunderbolt ports (on 3 busses), 4 USB3 ports and 1 HDMI 1.4 port (you can use a 4k display with this one). The iMac comes with a display so you are stuck with that. The Mac Pro allows you to pick your own display(s) (you can pick up to six) such as a 4k display (the Mac Pro has enough power to drive it, it remains to be seen if the iMac does too).

    Simply put: Apple has about 3 options in computing power for desktops: Mac mini (low end), iMac (mid) and Mac Pro (high end). I'd focus on that and try to figure out in which category you belong. Then find out if you want something that already comes with a display (a glossy one even, not everybody likes this) or you want to pick your own and if it will be 1 or more. That way you narrow things down and you'll know what to get (or save for).
     
  9. LongSticks macrumors 6502

    Joined:
    Jul 22, 2012
    Location:
    Kent, UK
    #9
    Thanks for the reply. I was reading too much into the "infrastructure" part of the quote. :(

    Never had a crash on parallels either, but as I said, I Bootcamp when I'm gonna push it hard.

    Think I'm gonna have to do a try before I buy on nMP and see if it fits my workflow!
     
  10. aloshka macrumors 65816

    Joined:
    Aug 30, 2009
    #10
    This is good info. But I had a question. I run 2-3 virtual machines at a time on an iMac right now. The VM's can have no less than 2 cores (anything less REALLY slows them down). 4 is ideal (feels a little faster--hard to explain, when I say a little, I mean 5% of the time, if that. I think assigning 4 cores is more of an ego thing--wanting something powerful, and having all 3 run at 4 vCPU's right now seems to work OK--although occasionally I get slowdowns on one VM that are really bad, not sure if it's related). I am on the verge of purchasing a Mac Pro (the iMac overheats during sustained processing/compiling and everything slows down), but cannot decide between 6 and 8 cores. 8 cores is +1500, which is a huge bump in price. I understand that they have similar performance when running simple tasks (similar turbo on 2-3 active cores). Assuming that only 1 machine does any heavy lifting at a time and most of the time only 2 run at a same time, is it worth going 8? Price is not too much of an issue (although, no one has 1500 lying around), and I don't want to blindly waste money.

    About your statement... If you can only use half the physical cores, does that mean when you run 3 vm's on a 4-physical core machine that you can only run 2 at a time with 1 vCPU assigned?

    Doesn't OSX have something called grand central, where it pushes any thread to any core and technically vmware/parallels has no control over it--I think it's called processor affinity? So even if you over provision (6 vcpu's on a 4 physical core machine), it should technically be fine unless you cap all 6 vCPUs?

    Any help you provide will be awesome. I have a firm understanding of how ESXi handles it, but no idea how OSX/fusion/parallels handles it as they are definitely different hypervisors. Need to purchase the nMP soon, as I don't want the shipping date to slip to April. And don't want to jump the gun and buy something either underpowered or waste 1500 for no benefit
     
  11. johngwheeler macrumors 6502

    Joined:
    Dec 30, 2010
    Location:
    I come from a land down-under...
    #11
    Do you have a reference from VMWare about the recommendation to only assign a maximum of half the physical cores to guest VMs? I had always heard the recommendation to leave at least whole physical core for the host, but that otherwise 1 vCPU = 1 hardware thread. In the case of an 8-core nMP, this would give you 14 vCPUs (i.e. 7 cores with 2 H/W threads per core).

    I agree with your recommendation to start low, with a single vCPU and then work up if CPU load is >70%. One thing that is often mentioned is that the more vCPUs a VM has, the harder it is for the hypervisor to schedule time to the VM, particularly if the VMs are "over committed" (i.e. you have more vCPUs than physical cores/threads). E.g. if you have a 4 vCPU VM, then the hypervisor has to wait until 4 threads (2 cores in the Intel architecture) are completely "free". This is much harder to achieve than waiting for a single thread to become free. This is why adding more vCPUs to a VM often results in worse performance. There is a happy medium, which you need to find by experimentation for your particular VM. It's often 2-3 vCPUs.

    John
     
  12. AidenShaw, Feb 3, 2014
    Last edited: Feb 3, 2014

    AidenShaw macrumors P6

    AidenShaw

    Joined:
    Feb 8, 2003
    Location:
    The Peninsula
    #12
    I run a lot of VMs with Workstation on my desktops and laptops (as well as a vSphere cluster of 256 GiB 16-cores).

    One thing that I found out was that VMware is stupid sub-optimal about scheduling multi-core guests.

    When a guest gets CPU time, it gets all of the cores that are assigned to it. (It's probably simpler for the VMware VMM that way.)

    This means that if a quad core guest needs 1 core, it will be idling three cores during its time slices -- even if the host or other VMs are waiting for CPU.

    I normally don't like hyper-threading except for busy servers, but I've had good luck with it with VMware Workstation. I have one quad workstation that I run a busy quad VM on, and it's fine with hyper-threading. The host never gets bogged down.

    On my home machine right now (24 GiB Core i7 quad with hyperthreading on) I have an 18 GiB quad guest, a 1.5 GiB dual guest and a 1 GiB dual guest.

    It runs fine - there's a little pressure on RAM so that you can tell when you switch to an idle window it lags a little (but the pagefile striped across two fast SSDs helps there).

    I think that my rule is "never assign more than half the logical cores to any one guest". (On the ESXi servers at work, hyperthreading is off and the rule is "never assign more than half the physical cores to any one guest".)
     
  13. johngwheeler macrumors 6502

    Joined:
    Dec 30, 2010
    Location:
    I come from a land down-under...
    #13
    I missed the emphasis on maximum cores for a single guest. I'd agree with this rule of thumb, especially if more than one VM guest is running concurrently. I might try to run some benchmarks with hyper threading disabled to see what the real world impact is.
     
  14. dalupus macrumors regular

    Joined:
    Jul 19, 2011
    #14
    I use a rMBP 2012 for this.

    I run windows 8 full time in a VM off of my SSD for work. I give it "2 cores" and 2GB of ram. Never have any issue with it.

    I usually run 2 or 3 other ubuntu vm's at the same time with 1 core and 1.5 GB of ram each and run them off of external USB 3.0 drives and even they seem to run fine for the most part. The only issue I ever have is RAM. CPU cores never seem to be an issue.

    I have considered getting a new mac pro simply for the extra RAM as that seems to be the main bottleneck for running multiple VM's, not processor cores.
     
  15. dyn macrumors 68030

    Joined:
    Aug 8, 2009
    Location:
    .nl
    #15
    It is not my statement, it is what VMware is spilling on their website (knowledgebase and forums) as well as their Fusion twitter account. From what I know is that it will have to run several threads simultaneously (in parallel). This is where things go wrong if you don't have enough cores/cpus (or simply put: there isn't enough hardware to run all those threads simultaneously).

    What I've seen is that it can run several vm's just fine. It'll queue the workload (run it in serial) which is why this will work fine.

    They are probably taking the overhead into account. It is more like a rule of thumb (it is much easier to say "half the amount of physical cores"). OS X itself also likes multithreading.

    OS X does have GCD (Grand Central Dispatch) and so does something like FreeBSD. In both cases the applications need to support it and I have no idea if VMware or Parallels support it. VMware has a pretty solid base which was mostly invented before GCD existed so I'm guessing that they won't support it. ESXi, however, does have support for hyperthreading.

    About 90% of the code is shared between Workstation, Fusion, Player and ESXi but there are quite a lot of differences too (like ESXi being able to use hyperthreading and assigning a specific core to a vm, the others can't do this).

    They spam it in their own forums and on their Fusion twitter account (when it used to be useful; it is now only used for marketing). You'll see it in topics where people are having performance issues and have assigned quite a lot of vCPUs. They used to have it in the "choosing vm settings" document but they made the text a bit more "generic" (it looks as if they are saying "try it yourself and you'll for yourself" aka trial & error). The document does mention that some are seeing an overhead of about 30%.

    VMware seems to be recommending that too as well as many others. If you mess around with the settings you quickly know why :D
     
  16. aloshka macrumors 65816

    Joined:
    Aug 30, 2009
    #16
    Thanks so much for your answer, it really is helpful.

    I did some benchmarking, not passmark or anything like that, more timing of visual studio compile times, opening up x amount of programs, etc. It seems there is actually no difference between 2 and 4 vCPU's. The only thing that seemed different is background compile on Visual Studio, the 4 core let you scroll things before the document loaded. But not a big deal since even syntax highlighting doesn't catch up until later.

    I do prefer fusion over parallels--mostly due to some bugs that make my workflow hard in parallels; fusion has some too, but it's a choice of which ones I can live with.

    Again, thanks for the explanation. I think I'm leaning on 6-core, assigning 2 cores per machine, 8gb of mem and going from there. The small performance boost (if at all) of 4-core isn't enough to warrant a 1500 processor upgrade.

    One more time... much appreciated!! Ordering my nMP...
     

Share This Page