VMware Communities
jjknewrony
Contributor
Contributor
Jump to solution

Performance of Visual Studio using VMWare

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

0 Kudos
36 Replies
DerekS
Enthusiast
Enthusiast
Jump to solution

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.

0 Kudos
BobTheDog
Contributor
Contributor
Jump to solution

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

0 Kudos
Keltia
Contributor
Contributor
Jump to solution

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.

0 Kudos
jjknewrony
Contributor
Contributor
Jump to solution

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.

0 Kudos
admin
Immortal
Immortal
Jump to solution

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.

0 Kudos
jjknewrony
Contributor
Contributor
Jump to solution

I did check that. It was set optimize for virtual disk performance which seemed right to me.

0 Kudos
admin
Immortal
Immortal
Jump to solution

Try changing it anyway. If the guest is doing lots of I/O, this can crowd out your Mac apps (including Fusion).

0 Kudos
jthg
Contributor
Contributor
Jump to solution

...For sure, the performance is better - although still not approaching what I was hoping for.

Can you describe what specifically is slow?

0 Kudos
jjknewrony
Contributor
Contributor
Jump to solution

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.

0 Kudos
admin
Immortal
Immortal
Jump to solution

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.

0 Kudos
DerekS
Enthusiast
Enthusiast
Jump to solution

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. Smiley Happy

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?

0 Kudos
jjknewrony
Contributor
Contributor
Jump to solution

Derek - do you ever sleep? Smiley Happy

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.

0 Kudos
BobTheDog
Contributor
Contributor
Jump to solution

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

0 Kudos
jjknewrony
Contributor
Contributor
Jump to solution

Thanks Andy. This makes some sense since the start up probably relies more on disk IO. The running program relies more on memory.

0 Kudos
jthg
Contributor
Contributor
Jump to solution

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).

0 Kudos
jjknewrony
Contributor
Contributor
Jump to solution

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.

0 Kudos
admin
Immortal
Immortal
Jump to solution

Thanks for the followup, and it's good to be vindicated that Fusion works Smiley Happy

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).

0 Kudos