Is Dual CPU Better for Virtualization?

Discussion in 'Mac Pro' started by eponym, Aug 18, 2010.

  1. eponym macrumors 6502

    Joined:
    Jul 2, 2010
    #1
    Something that's been nagging me in the back on my mind with Quad/Hex vs Octo is virtualization.

    I do a fair amount of it in addition to Mac-native development and design work. I typically have 2 VMs running within Fusion and will more likely be using 3 at a time once I get the Pro (various versions of Windows, Visual Studio, SQL server etc etc).

    What I don't know is if Virtualization performs better with 2 physical CPUs. I've only ever done it with 1. I know Fusion's recent 3.1 update added support for 8-way SMP. But does anybody know the overall effect of single vs. dual?

    I'm debating now if I should be looking at octos (2010 or refurb 2009) vs the new 3.2 Quad or 3.33 Hex.

    :confused:
     
  2. eponym thread starter macrumors 6502

    Joined:
    Jul 2, 2010
    #2
    The other factor of course being RAM since an octo affords me more slots to easily supply my VMs with copious amounts of RAM.
     
  3. mmhaskar macrumors newbie

    Joined:
    Aug 18, 2010
    #3
    Thanks for asking that question!! You beat me to it - I've been trying to figure out the exact same thing. Running multiple VM's for essentially the same types of development activities you listed.

    Based on scanning another thread comparing 6-core v. 8-core, there was some debate around whether the "virtual" cores could even be used if all threads were already active -- made me think the Octo-route was better for Virtualization where you'd be guaranteed dedicated physical cores for the VM.
     
  4. eponym thread starter macrumors 6502

    Joined:
    Jul 2, 2010
    #4
    Anandtech has a recent article that I was just reading comparing different server configs for serious hardcore virtualization (super expensive datacenter servers).

    And in that VM-heavy environment, adding multiple cores scaled quite directly. In some cases, adding a better than 1-to-1 performance boost even though the cores themselves were clocked much lower. It just makes it easier for the scheduler to assign threads to cores.

    Admittedly it's possible very little of that info would apply to my situation. But given the recent updates to Fusion, and my needs for RAM (I'd like to give my VMs more than the bare minimum) I'm actually going to take a leap of faith and get the 8-core.

    It's not my money anyways and I'm sure the company wouldn't mind seeing a lower bottom line on my upgrade.
     
  5. TennisandMusic

    Joined:
    Aug 26, 2008
    #5
    Excellent thread. I'd really like to know if a dual cpu config is better than a hex if you often want to run Windows 7 on top of OSX.
     
  6. deconstruct60 macrumors 604

    Joined:
    Mar 10, 2009
    #6
    Pragmatically, that article doesn't tell you much. The benchmarking is done by running on top of ESX. ESX isn't supported on Macs ( last I checked. )

    Running on ESX and running one Fusion are substantially different. Fusion runs on top of Mac OS X. ESX runs on the raw hardware.

    Will be a difference if the virtualization takes into account processor/memory affinity when loading up the VMs. So in a dual package set up if have two VMs If run one on processor package 1 and second on processor package two then there are no memory accesses across the processors. If Fusion takes step to separate and pin the VMs onto specific processors can get a bump. if have perfect control can run two VMs so that are leveraging different pools of memory ( don't think fusion does the fancy VM overlap sharing that raw iron versions with some images.) Or can pin them together on single pair if there is some shared data that probably would allow Mac OS and other stuff to migrate to the other one.

    It is possible to pin threads to a core just not sure if Fusion is trying to do that and what Mac OS X will do with other workloads in response. Should try to balance things out but perhaps not like ESX does it.


    VMs tend to have a large memory footprint ( unless running embedded oriented OS on the VM. ). The dual package set up is going to offer more memory bandwith than the single package one.

    That would be a small effect though until amount of memory in dual package box significantly passes the single package one.

    Here is a link to some data where used a couple different Mac ( a duo versus quad versus ... ) and got different results.

    http://www.mactech.com/articles/special/1002-VirtualizationHeadToHead/index.html
    [ ignore graphics charts after "page 4" because I think that starts to wonder into GPU differences rather than core ones. ]


    The Quad does better in many places on the charts associated with the article. That is despite the iMac having an addition 1GB of memory and slightly lower clock speed. Better I/O helps run VMs faster. It is not purely a CPU power crunching problem.


    The bigger issue though is what the 2 and possibly 3 VMs are doing. If you want to have three VMs that are all active simultaneously (for example two are running servers services and the 3rd is a client banging on those services) then more real cores is better because have many more threads of work to do. If each one of the VMs thinks it is a running on a dual and they are trying to run a non trivial load factors then you will need cores to match that workload. 2 * 3 is 6 cores. If those are all busy running Windows/Linux/whatever code what is left to run Mac OS X and Fusion? At that point need more cores. ( trying to run a server cluster inside a single box).

    On the other hand if you run one VM and pause the other 2. Then pause that one and unpause another. Then don't have a high concurrent workload. Similarly if running different clients for testing purposes then only really running them serially. You may have multiple VMs open but if the majority of those OSes are running at <2% load factor that not worth adding more cores. (trying to consolidate running multiple lightweight machines in a single box. ) Memory is probably a more pressing issue than more cores. The question will revolve more around how much max memory you need to keep all those mostly non-executing VMs happy.

    The default install that Fusion uses for Windows is 1 virtual processor and 1GB (for Vista/Win7). So three of those generic installs is only 3 cores and 3 GB. if have 6 core 16GB box you are set unless there is some RAM hog on the Mac OS X side. You'd have 13 GB and 3 cores left even if those 3 VMs are running full blast. That is still a pretty good machine.

    You want to have a big buffer from being anywhere need going into virtual memory swapping by Mac OS X. Likewise need to leave room for Mac OS X and the mac apps to get time on cores.



    Even with using ESX those two problems, "active cluster in a box" and "VM consolidation" , lead to deploying onto different sever configurations.
     
  7. Ryan P macrumors regular

    Joined:
    Aug 6, 2010
    #7
    I manage a 3 node ESX cluster at work and we actually found disk access to be the biggest bottleneck. We are now on a high speed HP EVA 8100 SAN and that is no longer an issue. We have over 200 GB's of RAM total in 3 blades running ESX!
     
  8. eponym thread starter macrumors 6502

    Joined:
    Jul 2, 2010
    #8
    @deconstruct60

    Thanks for the detailed reply. Since my VMs will be run at the same time (pausing maybe 1 of the 3 but that's it) I think the 8-core and lots of RAM (and possibly an upgrade to 12 core later) is the way to go.
     

Share This Page