Take the 2-minute tour ×

Can anyone offer me any insights into why my cloud deployment would be slower than an on-premises computer in "horsepower" terms?

I have a compute intensive application which uses a worker role to carry out millions of computations (in parallel).

Currently in Azure I'm testing using an Extra Large (8 core, 16GB) VM to do the processing. On average it's taking 45 minutes per iteration whereas the same code running on a 4 core, 8GB on-premises machine was taking only 15 minutes.

Azure logs indicate total processor utilisation is 99% but I have 12GB memory free so I'll definitely try loading more data into memory for each iteration.

Are the 8 cores just individually very low spec? Is local storage really local? That is, is local storage really on a different physical device and therefore fetching data from file and writing results to disk is slow?

share|improve this question
add comment

4 Answers

I am experiencing the same issue. My web app with the database (on sql azure) is also really slow compared to my on-premise computer.

Local server details: - dell's entry level server < $1000, with 4 cores and 8GB memory. - Server is running as VMs - even DB server is on the same server (sharing same hardware with the web server)

Azure: - Webrole on Extra large server with 8 cores. - SQL Azure (I guess on the different physical server)

My expectation was that it will improve the performance when I deploy to azure! :( Guess what, it is 4 times slower (verified using the profiler code that times every request)

I am disappointed, I think it is really slow 8 cores.

I ran the test on my old computer (Intel Pentium). Installed the same local VMs on that (VMWare host). It is even faster than azure.

share|improve this answer
add comment

Scott Guthrie (main at Windows Azure team) to me
Hi Ivan,

We have other VM HW configurations as well – including multi-proc and high memory options. You’ll see even more options in the future.

Hope this helps,


My test: (100% of processor time)

Lucas-Lehmer math calculations. Multithread version uses Parallel.For implementation

Home computer Core i7 3770K (4 cores x 3.5GHz) (Win 8)

SINGLETHREADED (17 primary numbers): 11676 ms (11.6 secs.)

MULTITHREADED (17 primary numbers): 2816 ms (2.8 secs.)

Azure Large VM (4 cores x 1.6 GHZ) (Win S 2008)

SINGLETHREADED (17 primary numbers): 37275 ms

MULTITHREADED 17 primary numbers): 10118 ms

Azure Extra Large VM (8 cores x 1.6 GHZ) (Win S 2008)

SINGLETHREADED (17 primary numbers): 36232 ms

MULTITHREADED (17 primary numbers): 6498 m

Work computer - AMD FX 6100 (6 cores x 3.3 Ghz) (Win 7 w upd)

SINGLETHREADED (17 primary numbers): 48758 ms

MULTITHREADED (17 primary numbers): 16486 ms

Vote for this idea on first page http://www.mygreatwindowsazureidea.com/forums/34192-windows-azure-feature-voting/suggestions/3622286-upgrade-windows-azure-processor-from-1-6-ghz-to-mi

share|improve this answer
add comment

Couple questions in here, I'll try to answer some...

Local storage is local - means on the same disk, in a restricted area. Are you using the local storage APIs to access it? Local storage is also disposable - if your app is redeployed, all data in local storage is lost. If you are using an Azure Drive, then yes I would expect some delays since this writes to blob storage but you haven't mentioned that.

CPU spec is defined on the Azure website.

It is difficult to solve your actual slowness problem though without getting a better idea of the architecture and process your background work is following. But as a general rule, I would be surprised to see the results you are indicating. (Is your on prem machine a VM or dedicated hardware?)

share|improve this answer
Yes, I'm using local storage via the API. Volatility is not an issue for me. I copy input data sets from blob storage, write interim results to local storage and then final output back to blob. I think I'll have to add more Trace Information to figure out if I'm compute or IO bound. –  user1200984 Feb 10 '12 at 12:28
add comment

I find the same thing when running analytics-heavy code (ie. little disk usage, not too much RAM needed). I guess the problem is that they select CPUs based on price and number of cores rather than power. The theory is that you should be parallelizing your code to take advantage of all those cores, but sometimes that's hard or expensive (in coding time). Consider voting for more CPU power, but sometimes that's hard or expensive.

share|improve this answer
I suspect you're right (lots of low power cores). My code is highly parallel. In this respect I found PLINQ extentions a great boost. Ultimately though this only allows me to scale out via processors whereas it looks like I'll need to scale across multiple worker roles. :-( –  user1200984 Feb 10 '12 at 12:33
add comment

Your Answer


