Tuesday, May 14, 2013

I recently got allocated a subscription (20 cores) to the Windows Azure cloud, yay!
What dawned on me was that I have all these virtual cores but I have no idea how powerful they are. How many effective servers could I construct out of 20 cores?
Which lead to me to ask, just how much power am I given with each core?

Having some time on my hands, I decided to find out.

The Test Environment:

Platform: Windows Azure
Operating System: Windows 2008 R2 DCE (64bit)
Virtual Processor: Single Small Processor Core (reported by MS @ 1.6Ghz).
RAM: 1.75GBytes.
Data Centre: Northern Europe (UK)

Firstly, let’s get an idea of what this Azure core/ processor is about by loading up CPUz .
Now if you are unfamiliar with this app, CPUz provides low level information about the processor, motherboard and memory on the computer you execute it on.
CPUz is quite popular in the overclocking communities and used to verify the true operating values of your processor.


Alright as we can see here, the processor reported is an AMD Opteron 4171HE operating at 2.1Ghz to 2.2Ghz. It has speed step type technology active so it switches from 2.1 to 2.2 constantly and usually when under a bit of load.
For more information on the Opteron 4171 HE processor, checkout this link
à http://www.cpu-world.com/CPUs/K10/AMD-Opteron%204171%20HE%20OS4171FNU6DGO.html

Benchmark SiSoft Sandra – Sisoft lite 2011.b

Ok, next up some synthetic benchmarks by one of my favourite tools Sisoft Sandra.
Now the word synthetic here does not mean fake or non real, it indicates that the processor will be tested in a particular area (a very important area) and will not reflect the exact performance of the processor in all areas (but it’s usually a good general performance indicator). So keep that in mind.


The memory benchmark result is nothing to write home about with a peak memory transfer rate of 5.8 gigabytes per second.
Your average modern day computer is scoring around 15-25Gbytes per second.


Next the processor was tested. Again, this single small Azure processor core performed lower than my expectations.
The result, 7330 Million instructions per second (MIPS). Sounds like a lot but compared to your low end Intel Core 2 Duo which averages around 21000 MIPS or 21GIPS.

Overall, this virtual processor performs about a third of the speed of a Core 2 Duo E6300 @1.86Ghz.
So using 2-3 small Azure processor cores ought to be enough for most server needs.
Note that the latest processors are scoring around 40GIPS in this test. So it would take 7+ small Azure cores to compete with them.

Physical disk performance:

There are two physical disks available on each Azure Windows virtual machine.

Drive C: contains the OS and permanent files and drive D:  named Temp storage contains well nothing except a 4GB swap file and free space.
Both disks are reported to be Virtual SSD drives. (As they are being interfaced through a Virtual Machine driver stack, it’s difficult to know for sure.)




The first test of this benchmark returned just over 50MB per second but with burst speeds of up to 500MB per second.
The second and further tests were locked in at 1GB’s per second. (It appears if caching is enabled on these drives)
Drive D (Temp Storage) in the VM is yielding ridiculous results. 2.4GBytes per second with a peak rate of 2.53Gbytes at particular sections.

I will need to perform a second set of tests using a different tool to validate these results.


HDD Tune 2.55

HDD Tune is utility which provides low level information about your hard drives, their SMART registers and can perform a HDD benchmark to evaluate the data transfer rate.

Drive C


Interesting, here we see the 575MB spike. I tested this multiple times and the spike is at the same location each time. I tested it a few hours later and the spike moved.
This means that the HDD space that is being allocated to the drive is likely from several arrays. One of the arrays is like totally underutilised and when I seek/read from it, it returns data at its optimal rate. The transfer rate is quite slow compared to your standard HDD (100MBs) however the burst rate is quite amazing.

Note the CPU load was actually around 5-10% during this benchmark.

Drive D


Here again we see the insane performance of Drive D.
 I can see why this drive is used to store the swap file. Its fast, so when swapping to disk, you’re sort of swapping to the fastest disk money could ever buy you at present.
To give you an example, to achieve the same performance as what is being reported here, you’d need to stripe 2-3 modern day SSD’s together.

Note the CPU usage was rather high during this benchmark, averaging between 30 to 40 %.


Just for fun - Benchmark  – Super PI - http://superpi.ilbello.com/

Super PI is an application which is used to benchmark and stress processors.
It works by calculating PI to a specific number of digits after a decimal point.

Here are the results:


The VM actually did quite decently in this test. The performance was similar to 2x instances of Super PI running on an E6300 @ 1.86Ghz.  

Peripheral Result

Processing speed – Its quite decent. I recommend running 2 or more cores for windows and 1 core with Linux. Upscale from here as you need more processing power.
Ram – A tad bit slow but you get plenty of it. Should you want to use more, consider increasing your swap file size as the drive D performance is impressive enough to provide optimal swapping speed.
HDD – Drive C appears a bit slow (could be an overloaded array) while Drive D is amazingly fast. Keep in mind that you can utilize the amazing performance of drive D in certain scenarios by specifically programming against it.


With my 20 core allocation I estimate I can put together about 10 good servers or 5 great performing servers or 2 pretty amazing servers.
As I don’t need great or amazing, 10 good servers will do =)