Hi, I am a developer who has always used dell and toshiba products. I finally purchased a 2.4 macbook with 4GB memory. I started having second thoughts cause no one at Mac Store knew the VMWare technology. My concern is this: how will Visual Studio perform as compared to a dell laptop with 2GB memory? If it is slower, I need to think about returning the Mac and staying with Dell or some other laptop. I want to put XP Pro on the VM Ware. I am not using graphics - more number crunching, exports to Excel and socket programming. I will also be running 2 java programs along side the visual studio. These programs use sockets - but also do not use graphics. Anyone have experience with this? I was told once I open the Mac, I can't return it simply because the performance of VMWare is poor.
Any advice, prior experience is welcome. And if you need further info, I will be glad to furnish more details.
Thanks
As for spotlight, it's always running - but the question is, is it indexing?
If you installed VMWare first thing you did after booting it up, this is quite possible. It takes a couple hours to index the disk when a Mac is first powered on or reinstalled.
Hi,
I do all my windows dev in 2003 and 2005 on fusion, on a mac pro and a macbook pro.
The macbook pro doesn't perform that well I have always thought, setting to 1 cpu helps quite a bit. I have had discussions with support who gave me hope that version 2 would handle multi-cpus better, from what I can see it doesn't.
The advantage for me of fusion is that I can run xcode and vs at the same time, if I did not need that I may have gone with bootcamp which seems much much quicker on the macbook than fusion.
Andy
Hmmm, by default when I create a VM (for FreeBSD, not for Windows), the default RAM allocated to it is 256 MB. Check this as 256 MB is clearly not enough.
So I changed the RAM allocation - it was set to 512 which is not enough. Spotlight did not seem to be running. I tried 1 cpu and 2 cpus. I tried the 3D setting. For sure, the performance is better - although still not approaching what I was hoping for. I installed VmWare Tools - but I'm not sure what I'm supposed to do with that. I will try different RAM settings - but it looks like I might have to consider Bootcamp as my next choice.
Another important thing to try tweaking is whether Fusion is optimized for Mac OS application performance (this includes Fusion) or for virtual disk performance. For the technical-minded, this affects whether we tell OS X to cache disk I/O. You may have to restart Fusion for the changes to take effect.
I did check that. It was set optimize for virtual disk performance which seemed right to me.
Try changing it anyway. If the guest is doing lots of I/O, this can crowd out your Mac apps (including Fusion).
...For sure, the performance is better - although still not approaching what I was hoping for.
Can you describe what specifically is slow?
I will look at that a little more and get back to you. Everything is slower than what I am used to. But a lot of it is still acceptable (versus the alternative of using bootcamp). When I first start my visual studio app and java app the start up time is about 2 minutes. I can see in the accompanying dos prompt windows that it is taking time instantiating spring objects in the background. On my pc, this takes no more than 10 seconds. Once the objects are instantiated, the performance of my application, although slower, is decent with all the setting changes you guys have recommended.
I see that the cpu is heavily used, so I would think that using 2 cpus instead of 1 might help. But when I tried that, it did not. However, I have to see what my other settings were when I tried the 2. Perhaps some combination of all the settings will work best.
Also, perhaps in my code, I can make the java thread sleep until the visual studio program is ready - lessening the impact on cpu.
etung - you are suggesting changing the setting for optimal Mac performance? I'll give that a shot as well.
I'll post when I have more results.
Thanks again for all the input. Extremely appreciated.
Hmmm, by default when I create a VM (for FreeBSD, not for Windows), the default RAM allocated to it is 256 MB.
The default amount of RAM depends on what you tell Fusion the guest is, and how much RAM your Mac has total. For example Vista and DOS have very different requirements, and an appropriate allocation is different on a Mac with 1 GB of RAM vs. a Mac with 8 GB.
Wow, two minute startup time!!
I never do Java, just C# apps (mostly ASP.NET) and the build/start is just a couple seconds.
That must be one heck of an app.
Glad the performance is somewhat better, and I apologize again for being overly optimistic about your experience. Have you tried throwing it 2GB to see how it behaves?
Derek - do you ever sleep?
Don't sweat it. I knew I was taking a chance. Worst that happens is i do Bootcamp - seems like most everyone says that will improve the performance. I'll have to see how annoying it is to go back and forth from mac to fusion.
I tried the 2GB and 3GB. It was worse. But I probably need to try a few more combinations before giving up.
The java contains a socket thread and waits for the client which is visual studio app. I think the thread sleeps itermittently while waiting but i need to check the set interval. Perhaps if I lengthen the sleep time, it will allow Visual Studio to start up quicker. I don't understand why the 2 cpu setting would not help.
Bootcamp will give you very good performance, basically the same as a similar spec pc.
With fusion I see the main performance issue is hard disk access, anything doing lots of this acts quite slowly on my MacBook. It seems bad when you have multiple processes/threads accessing the disk at the same time.
The slow screen update can also make the vm seem slow, using 2 cpus/cores makes this update much slower.
On my Mac Pro it seems to run much better, even with two cpus/cores anabled.
Cheers
Andy
Thanks Andy. This makes some sense since the start up probably relies more on disk IO. The running program relies more on memory.
If the app's startup time is going from 10 sec. on a PC to 2 min. in Fusion, there has to be something going on other than the normal virtual machine performance hit. Is there any way for you to profile your app to find out whether there's a specific operation that's taking an unusually long time?
Here's my impression of Fusion's performance:
-- Hard disk IO is about half as fast as in OS X. I.E. copying files within the same drive takes twice as long.
-- The VM's network bandwidth is capped at around 120mbps (even between guest and host). This cap might also apply to internal traffic within the guest depending on how the packets are routed.
-- Raw computations and other non-IO operations run at essentially full speed. I.E. it takes the same amount of time to factor a large number inside a virtual machine as it does to do it outside.
-- Graphics performance (2D and 3D) is smooth except for games. Simple 3D apps work fine and DVDs play without any hiccups in Fusion. Most games, though, are completely unplayable.
-- When idle, the virtual machine eats up about 10% of the host's CPU cycles (on one core).
Hi Guys,
Sorry it has taken so long to record my final results. But I figured out the problem! It is very interesting - one of my java processes is a thread that waits for another program (visual studio) to connect. Until the connection takes place - it polls waiting for the client connection. This eats much of the CPU. Once the client connects - performance is pretty good with all the tweaks you all offered me. So I made the thread sleep every second or so until the connection was made. That made the difference. I will go on record to say that I am extremely glad I purchased the Mac and the VMWare. It is a bit slower than the PC set up - but very tolerable. I guess I never saw this performance issue on the pc cause it has more than 1 cpu. I'm still not clear on why the 2 cpu set up in vmware hurt performance. But I am very pleased with this setup. Thanks for all the help and feedback. Derek - now you really don't have to feel bad. Your advice was sound. I just had to tweak a piece of code I never suspected I had to tweak. And in the end, my code is better for it.
Thanks for the followup, and it's good to be vindicated that Fusion works
I'm still not clear on why the 2 cpu set up in vmware hurt performance.
I recently heard a good analogy: say that physical processing units are seats at a restaurant (granted, a very small restaurant - for the sake of this example, let's say it has 2 seats, e.g. a 1x2 core MacBook Pro). Processes are people who want to eat, and sometimes you get a group of people who all want to be seated together. It's easier for the restaurant (i.e. host OS scheduler) to handle seating two single people than a single group of two people, especially when you remember that a normal system will easily have tens or hundreds of processes running at a time. To make matters worse, OS X is the one to decide when and where programs get to run, and last I heard, there were no way to ask OS X for the necessary scheduling (i.e. there's no way to make group reservations; the best we can do is to sit down and hope that both people manages to show up and that they get to finish their meal before the restaurant kicks us out and moves on to the next set of people).