Big thanks to CloudSigma

cmips-net-cloudsigma-present-to-carles-50pcThis Christmas I’ve received a gift from CloudSigma.

It was a very cool detail.

They sent me a very good Scottish whisky, with a beautiful hand made crystal glass, packed in a nice wood case.

It was really a success because I’m a big fan of Scotland and I travel there so often as I can, so it was a very nice surprise having this present from there.

I don’t drink alcohol usually but I celebrated with my family and later the team contributing with tests to the project. πŸ™‚

I’m proud to be helping them to benchmark a new more powerful hardware platform, with even less performance loss due to virtualization by the hypervisor, before public release.

Big thanks to CloudSigma for their general niceness and the specifically coolness in this case. πŸ™‚

CMIPS v.1.03 benchmarks updated with CloudSigma and Azure

Here are provided the CMIPS results after the past tests with Microsoft Azure and CloudSigma Cloud.

CMIPS v.1.03 benchmarks* Please note that values published in the graph for CloudSigma’s CMIPS are the max obtained, as results fluctuated during the tests, as indicated in the review. The range is below, on the html table.

*2 Costs for CloudSigma came in EUR, so have been exchanged from EUR to USD using google. Prices show subscription (not burst mode)

And the CUP (Cost per Unit Process), the orange bar.

cmips-cup-2013-12-cloudsigma-aws-rackspace-linode

Detailed results:

Type of Service Provider Name of the product Codename Zone Processor Ghz Processor Cores (from htop) RAM (GB) Os tested CMIPS Execution time (seconds) USD /hour USD /month
Cloud Amazon T1 Micro t1.micro US East Intel Xeon E5-2650 2 1 0.613 Ubuntu Server 13.04 64 bits 49 20,036.7 $0.02 $14.40
Cloud Amazon M1 Small m1.small US East Intel Xeon E5-2650 2 1 1.6 Ubuntu Server 13.04 64 bits 203 4,909.89 $0.06 $43.20
Cloud GoGrid Extra Small (512 MB) Extra Small US-East-1 Intel Xeon E5520 2.27 1 0.5 Ubuntu Server 12.04 64 bits 441 2,265.14 $0.04 $18.13
Physical (laptop) Intel SU4100 1.4 2 4 Ubuntu Desktop 12.04 64 bits 460 2,170.32
Cloud CloudSigma 1 Core / 1 Ghz 1 Core / 1 Ghz Zurich (Europe) Amd Opteron 6380 2.5 Ghz to 3.4 Ghz with Turbo 1 1 Ubuntu Server 12.04.3 64 bits 565 to 440 1,800 $0.04475 $32,22
Cloud Amazon M1 Large m1.large US East Intel Xeon E5-2650 2 2 7.5 Ubuntu 13.04 64 bits 817 1,223.67 $0.24 $172.80
Cloud Linode 1x priority (smallest) 1x priority London Intel Xeon E5-2670 2.6 8 1 Ubuntu Server 12.04 64 bits 1,427 700.348 n/a $20
Cloud Amazon M1 Extra Large m1.xlarge US East Intel Xeon E5-2650 2 4 15 Ubuntu 13.04 64 bits 1,635 606.6 $0.48 $345.60
Cloud CloudSigma 3 Core / 1,667 Ghz each / 5 Ghz Total 3 Core / 1,667 Ghz each / 5 Ghz Total Zurich (Europe) Amd Opteron 6380 2.5 Ghz to 3.4 Ghz with Turbo 3 1 Ubuntu Server 13.10 64 bits 1928 to 1675 518.64 $0.1875 $135
Cloud Amazon M3 Extra Large m3.xlarge US East Intel Xeon E5-2670 2.6 4 15 Ubuntu 13.04 64 bits 2,065 484.1 $0.50 $360
Cloud Linode 2x priority 2x priority Dallas, Texas, US Intel Xeon E5-2670 2.6 2 Ubuntu Server 12.04 64 bits 2,556 391.19 n/a $40
Cloud GoGrid Extra Large (8GB) Extra Large US-East-1 Intel Xeon E5520 2.27 8 8 Ubuntu Server 12.04 64 bits 2,965 327.226 $0.64 $290
Cloud Amazon C1 High CPU Extra Large c1.xlarge US East Intel Xeon E5506 2.13 8 7 Ubuntu Server 13.04 64 bits 3,101 322.39 $0.58 $417.60
Dedicated OVH Server EG 24G EG 24G France Intel Xeon W3530 2.8 8 24 Ubuntu Server 13.04 64 bits 3,881 257.01 n/a $99
Cloud Amazon M2 High Memory Quadruple Extra Large m2.4xlarge US East Intel Xeon E5-2665 2.4 8 68.4 Ubuntu Server 13.04 64 bits 4,281 233.545 $1.64 $1,180.80
Cloud Rackspace RackSpace First Generation 30 GB RAM – 8 Cores – 1200 GB US Quad-Core AMD Opteron(tm) Processor 2374 HE 2.2 8 30 Ubuntu Server 12.04 64 bits 4,539 220.89 $1.98 $1,425.60
Physical (desktop workstation) Intel Core i7-4770S 3.1 (to 3.9 with turbo) 8 32 Ubuntu Desktop 13.04 64 bits 5,842 171.56
Cloud Digital Ocean Digital Ocean 48GB RAM – 16 Cores – 480 GB SSD Amsterdam 1 QEMU Virtual CPU version 1.0 16 48 Ubuntu Server 13.04 64 bits 6,172 161.996 $0.705 $480
Cloud Amazon High I/O Quadruple Extra Large hi1.4xlarge US East Intel Xeon E5620 2.4 16 60.5 Ubuntu Server 13.04 64 bits 6,263 159.65 $3.1 $2,232
Cloud Digital Ocean Digital Ocean 64GB RAM – 20 Cores – 640 GB SSD Amsterdam 1 QEMU Virtual CPU version 1.0 20 64 Ubuntu Server 13.04 64 bits 8,116 123.2 $0.941 $640
Cloud Digital Ocean Digital Ocean 96GB RAM – 24 Cores – 960 GB SSD New York 2 QEMU Virtual CPU version 1.0 24 96 Ubuntu Server 13.04 64 bits 9,733 102.743 $1.411 $960
Cloud GoGrid XXX Large (24GB) XXX Large US-East-1 Intel Xeon X5650 2.67 32 24 Ubuntu Server 12.04 64 bits 10,037 99.6226 $1.92 $870
Cloud CloudSigma 24 Core / 52 Ghz Total 24 Core / 52 Ghz Total Zurich (Europe) Amd Opteron 6380 2.5 Ghz to 3.4 Ghz with Turbo 24 1 Ubuntu Server 13.10 64 bits 10979 to 8530 98 $0.9975 $718.20
Cloud Amazon Memory Optimized CR1 Cluster 8xlarge cr1.8xlarge US East Intel Xeon E5-2670 2.6 32 244 Ubuntu Server 13.04 64 bits for HVM instances (Cluster) 16,468 60.721 $3.5 $2,520
Cloud Amazon Compute Optimized CC2 Cluster 8xlarge cc2.8xlarge US East Intel Xeon E5-2670 2.6 32 60.5 Ubuntu Server 13.04 64 bits for HVM instances (Cluster) 16,608 60.21 $2.4 $1,728
Cloud CloudSigma 37 Core / 2.16 Ghz each / 80 Ghz Total 37 Core / 2.16 Ghz each / 80 Ghz Total Zurich (Europe) Amd Opteron 6380 2.5 Ghz to 3.4 Ghz with Turbo 37 1 Ubuntu Server 13.10 64 bits 17136 to 8539 58 $1.5195 $1,094.10

 

Evaluating Cloud Sigma

CloudSigma has been one of the most difficult-to-test providers to the date for me.

Mainly because they have several differences with the average Cloud provider and the common way to perform of the vast majority of projects I’ve evaluated, and because the user interface is a bit ambiguous.

I’ll explain those differences and how to perform with CloudSigma.

First of all I want to thank to the Company and to the Customer Support that has been very nice.

CloudSigma assigned one of the support representatives to me, and she has been replying all my in deep questions, they provided 200 € in free credit so I can evaluate their platform at full level, they have provided a lot of technical information on their internals and platform, and have forwarded the bugs I’ve found to their Engineers and kept up me up to date on the development cycle and when they were going to fix the bugs I reported.

I have to clarify that I have found bugs in all the Cloud platforms I’ve tested, and in fact that’s one of my skills, finding bugs, that my employers love so much, but the main difference is that CloudSigma has been the only provider that has informed me about when they would fix the bugs and provided details on the Sprint (agile) and on the schedule for the deployment of the fixes.

I’ve evaluated their API and reported doubts and missing info on the documentation, and they have been transparent to reply all my questions and to recognize the points that I reported to improve. So big congratulations to their wonderful team, and for the good attitude.

For the development lovers I would say that their user interface is new, and works with Html5 WebSockets.

CloudSigma allows you to work with subscription and with burst mode. In burst mode you can pre-charge money to your account and work. To start an instance in burst mode you have to have enough credit to run the instance for 5 days.

One of the differences is that you can create an instance without a disk. This is a bit confusing the first time.

You have to create an instance, then assign a disk.

The disk can be assigned from, and that’s very good, one ISO Raw image that you upload.

It can be even created from a Marketplace’s image.

You can clone and use from the Marketplace OpenBSD, RedHat, Slackware, Debian, Ubuntu… pre-installed images (although Ubuntu 13.10 Server was not still in the list, I must say that after the publication of this article it was immediately added. Great!) or you can assign installation CD’s in ISO format and do a clean install. You can also use Windows and Sql Server images.

There are images, in the marketplace, for the drivers.

A positive thing also is that you have all the variety of Linux Desktops. So if you want to install Ubuntu 13.10 Desktop, Debian, or Fedora… you can do it and access through VNC.

In the other hand you can move the main or system disk from one server to another, that’s pretty cool.

The disks are SSD, and that’s very good for performance. You can create a Hard disk from 1 GB to 3 TB SSD.

CloudSigma platform is different from providers that have fixed instance-size, and here you can define how many Ghz (processor frequency) and how many RAM GB you want.

That’s a very interesting feature, as if you want a really powerful instance, but you don’t need much RAM, then you don’t have to pay for it!. Also if you want to create a cluster of Cassandra servers with not much CPU but a lot of RAM you can do it.

You can stop your server and change the amounts later and restart. That easy.

That’s really a very cool provisioning feature.

In terms of Zones CloudSigma has Datacenters in Zurich (Europe) and Las Vegas (USA), they run double 10GigE lines and they offer hybrid private patching (direct cable) that is a direct connection from your co-location servers to the public cloud, eliminating the need of a VPN and offering the possibility to contract advanced tools for security, backups…

As me they believe that hybrid cloud is key.

CloudSigma is a Cloud provider that remembers a lot to a familiar company. They have advanced services, but the relation with the customers is exquisite. They care about the companies being happy there like if it was a very small company. Some of my friend’s Start ups work with CloudSigma and they’re very satisfied.

I found and they confirmed, that are running on latest AMD 6380 processors (16 cores from 2.5 Ghz to 3.4 Ghz with Turbo) and they can offer up to 80 Ghz (80 virtual cores at 1 Ghz) but unless I’m missing something I don’t see the maths working (3.4 * 16 = 54.4 Ghz).

The RAM can be from 1 GB to 128 GB, that’s very good.

Another cool feature is that you can balance the number of cores seen by the guest OS, and play with the Ghz of that cores. So you can have 80 cores at 1 Ghz or 37 cores at 2.16 Ghz.

This is a very cool feature.

However, in the other hand the CPU performance detected by CMIPS is not always the same. It varies a lot from one test to the next and the next.

For a full 80 Ghz (37 cores at 2.16 Ghz each) instance, I got measurements from astonishing 17136 to 8539 CMIPS. That is shocking as I got 10770 to 8530 CMIPS with a 52 Ghz (24 virtual cores) instance.

I believe that this is related to AMD power-consumption features, and not related to CloudSigma itself, but right now I’m not sure and I would need a lot more testing to be.

Please note 17136 is the highest score achieved, even better than the powerful Amazon Compute Optimized CC2 Cluster 8xlarge.

In CloudSigma you can also use all the available bandwidth. Your instances are only limited by the ability of the server to handle network packets. So you don’t have a limit like in the case of other Cloud providers capping the outbound to 150 Mbits or more depending on the instance size.

Launching instances with CloudSigma is really really fast. The drive images are cloned at light speed (10 GB 3 seconds), and the servers are created in seconds and started even faster. Unlikely other Cloud providers the servers are created stopped.

Another cool feature is the incorporated costs estimation:

cmips-cloudsigma-estimated-costs-over-timeThe image shows the price for a 80 Ghz instance, with 1 GB of RAM.

As you can see prices per subscription are cheaper than with the burst mode.

In fact, CloudSigma has the most clear and predictable pricing model. You can check everything from the profile:

cmips-cloudsigma-pricing

Using a pre-installed image has the advantage that all the drivers are pre-installed.

Cloud Sigma Properties of a CMIPS Instance Another confusing option is the public key option, that you can define when you create your instance or modify it later. As I’ve been using images from the Marketplace, that are user (cloudsigma) and password based, not certificate-based, it seems like this is not an useful option for this scenario and is really confusing.

cmips-cloudsigma-properties-tab2

You can access their API from here: https://zrh.cloudsigma.com/docs/

Something that I dislike from the user interface is that the STOP button has no warning. You press STOP and you immediately stop the instance (like power off), and shutdown has a 90 seconds count down.

After you have created an instance, assigned the disk, and started it, you have to:

cmips-cloudsigma-actions-open-vnc

– Edit the instance Properties

– Go to menu Actions

– Select Open VNC

This opens a set of options at the bottom of the same section

– Log in via SSH or via the embedded VNC client (very nice)

 

 

CloudSigma open VNC in a new browser windowThe VNC client works well, unfortunately the key map from the keyboard is different, so I am not able to use certain characters like # or | that are generated with AltGr.

This is a problem for the default password of Ubuntu 12.04 Server, that user a #.

Specially painful with the laptop.

But you can access via ssh instead, and the keyboard mapping is right.

Then you must change the password for the user cloudsigma, via ssh it kicks you out after, and you must relogin with the new password.

The network polices (firewall) can be applied to several servers, but if they’re changed the new ones don’t apply until restart.

Fortunately you can access through the VNC web client (QEMU) even if you messed it up and blocked all the firewall ports.

You can see in real time your bandwidth consumption.

cmips-cloudsigma-outgoing-bandwidth-usage

CMIPS benchmarks and costs updated with Azure

After testing Microsoft Azure Small (A1), Large (A3), Extra Large (A4) and A7, this is how the results are.

(More CMIPS means more perfomance so a most powerful instance).

cmips-net-performance-of-clouds-added-microsoft-azure

As you can see Azure Extra Large and Azure A7 have the same CMIPS performance, the main difference is in the number of RAM.

About Linux prices we can say that Azure are not the cheapest, but they try to be much cheaper than Amazon. They have a long path to provide so many and so quality products as Amazon, but they are working intensely.

As we are commited to Start ups and Open Source we didn’t compare prices for Windows Servers between Amazon and Microsoft Azure.

In the next graphic you can see the CMIPS (CPU power + memory speed), blue bar -longer bar means more power-, and the CUP (Cost of Unit of Process) multiplied to 10M to fit the graphic scale, orange bar -shorter bar means cheap price, longer bar means expensive price per CMIP.

The best power-price are up on the list (long blue bar) but have a small orange bar.

Linode has an amazing relationg between power and price, the physical dedicated server from OVH introduced to have a wider picture has also a very good CUP ratio and with high computing power Digital Ocean (they equip SSD disks) beats the game with very powerful instances yet not so expensive as Amazon.

cmips-net-cup-cost-performance-of-clouds-added-microsoft-azure-gogrid-amazon-digitalocean

 

Reviewing Microsoft Azure

Microsoft has Azure, a Cloud platform similar to Amazon and it reveals obvious to me, that they are trying by all means to attract customers from Amazon to their platforms by beating AWS in price and performance.

The prices in Azure use to be half compared to AWS, for a bit more, or much more (like in the case of the Small) CPU power, as CMIPS reveals.

To show some examples, Amazon t1.micro costs USD $0.020 per hour and performs at 49 CMIPS, while Azure Small costs USD $0.060 per hour, but performs at 554 CMIPS, so 11 times faster. For the same price Amazon M1 Small performs at 203 CMIPS and costs USD $0.060 per hour as well, so half powerful (both have the same amount of RAM 1.7 GB).

Azure Large (A3) performs at 2142 CMIPS with a cost of USD $0.24 per hour, while Amazon m3.xlarge performs at 2065 CMIPS at a cost of USD $0.50 per hour. So similar power but double price.

In the case of the Azure A7 (56 GB RAM) we get 4412 CMIPS at the cost of USD $1.29 per hour while the Amazon M2 High Memory Quadruple Extra Large (m2.4xlarge) (68,4 GB RAM) brings 4281 CMIPS costing USD $1.64.

If we don’t need so many memory Azure Extra Large (A4) has the same CPU power as A7, with only 14 GB of RAM but a lower cost of USD $0.48 per hour.

See Amazon instance types for more information.

See Azure prices for more information.

cmips-net-azure-pricing

A very nice thing is that Azure charges by the minute, and not by hour (or fraction) like most of the Cloud providers.

Take a look at the price calculator:

http://www.windowsazure.com/en-us/pricing/calculator/?scenario=virtual-machines

cmips-azure-pricing-calculator

This week I was reported by an Start up founder that one colleague saved around 50,000 USD in the first year running his Start up with Azure, due to a kind of sponsorship/subsidized program by Ms Azure. This has to be confirmed yet.

To start, they publicly offer a Free month with 150 € pre-charged to use the Free trial.

The registration process is a bit annoying and confusing, having to create a Microsoft account, validating the card and receiving a SMS with a verification code,Β  and I had problems later because their website was not redirecting me to the proper page (halted on white page), but after going to their main login page an login twice being told because my session had expired (…) everything ran smoothly in my Firefox for Linux.

The thing that may surprise many users is that Azure does not only offer Windows Servers, it offers also Linux Servers.

As CMIPS is only for Linux, and Open Source is particularly interesting for the Start ups, and not privative cost-for-license Software, this will be the main target of analysis, but I tested some of the Windows platform features also.

The first thing, and I like it, is that you can select if you want to provide a certificate to login to your Linux box, log in by SSH with user and password, or use both methods.

In the text box you define your user and your password, and it works great. The user is automatically added to sudoers, so no problems here.

Another interesting feature is that all the instances you create have an unique name.

The name is in the form yourname.cloudapp.net

The namespace is shared among all customers so maybe the name you want is taken, but it is a great feature since everytime you shutdown you server, it will keep the same name.

That allows you to create a CNAME entry in your DNS pointing to your .cloudapp.net domain, and so user your DNS. For example www.cmips.net could be pointed as CNAME to cmips-t-small.cloudapp.net

That also adds an abstraction layer giving a lot of functionality.

I introduced this feature in ECManaged when I was in charge of the project, and I suggested this same feature to Amazon in a meeting I had in their offices in Dublin, when they invited me this November.

Another interesting feature is that Azure has several Data Centers:

North Europe
West Europe
East US
West US
Southeast Asia
East Asia

I may say that the provisioning of the instances, at least the Linux Servers, is slow.

The user interface is nice, fast, clear and useful, but doesn’t notices when I do sudo poweroff from the ssh terminal (or it notices really late).

So it doesn’t refreshed the status screen until many minutes have passed (around 30 minutes), it lacks a refresh button, and even if I refresh the entire browser it shows the virtual machine running when in fact is stopped.

They have a very nice monitor, very similar to ECManaged’s, but not so powerful and with limited alarms/alerts functionality.

cmips-azure-usage-overview

When I stop the server from ssh this monitor detects no activity on network, disk, cpu… but the user interface continues reporting that the server is on when in fact is down.

This happens also with the Credit Status, and the detailed page linked, that didn’t get refreshed after several hours running four instances and other services.

Some icons in the navigation bar on bottom disappear some times, randomly, and appear/disappear flashing when moving the mouse over, making difficult to find buttons like SAVE or DISCARD if they disappear and you didn’t see it before and hence you know where they should be placed.

Wow!. The Customdata feature to provide custom scripts in BASE64 when launching instances was only introduced to Azure’s API on October 2013, so a big big delay respect the competitors.

Optional in Linux Provisioning Configuration. Specifies a base-64 encoded string of custom data. The base-64 encoded string is located in the ovf-env.xml file on the ISO of the Virtual Machine. The file is copied to /var/lib/waagent/ovf-env.xml by the Windows Azure Linux Agent. The Windows Azure Linux Agent will also place the base-64 encoded data in /var/lib/waagent/CustomData during provisioning. The maximum length of the binary array is 65535 bytes.

The CustomData element is only available using version 2013-10-01 or higher.

msdn.microsoft.com/en-us/library/windowsazure/jj157194.aspx

One of the coolest feature is the AutoScale.

User can define different criteria for AutoScaling during the day and the night, the weekends, and special ranges.

cmips-azure-setup-schedule-timesThen Scale up or down according to CPU intervals, with cooldown (wait time to prevent scaling too fast within small peaks).

cmips-azure-scale-based-on-cpu-weekendThe AutoScaling options are not as complete as ECManaged, but in line with functionality offered by Amazon CloudWatch.

I found extremely useful the possibility to check the endpoints from different locations in Europe, USA and Asia.

I miss the option to receive alerts based on SMS, Skyper or Whatsup (email is supported).

I miss the possibility to raise events based on time, for example, start or stop a group of instances or do a Backup.

Azure offers a Market of Addons like for performing Backups, and a Market of instances preconfigured.

They also offer Managed Services and the possibility to hire support.

Another cool feature is the support for Load Balancers based on:

  • Round Robin
  • Performance
  • Failover

cmips-azure-traffic-manager-load-balancer-methodsThey allow the creation of Databases (Sql Server), similarly to Amazon RDS.

Also the creation of Websites, Mobile Services (with domain like https://cmipstests.azure-mobile.net/ and with functionalities like Push Notifications for smartphones: Windows Phone, iOS, Android, just HTML, Xamarin.iOS, Xamarin.Android), Windows Azure Cache, and collaboration storage for Visual Studio to use with Github or centralized version control. These last sites have the domain yourchosenname.visualstudio.com

Another remarkable aspect is that I saw only 64 bit Linux system, not 32 (honestly I see this Ok), and according to /proc/cpuinfo on the guest OS, the CPU detected on the host servers is an AMD Opteron 4171 HE (six-core processor – 2.1GHz (Lisbon, 6MB Level-3 cache, socket C32, 50W TDP) designed for Cloud). Please note that in the documentation of Azure it says that Small servers run at 1 Ghz

In the next article I will add the results of CMIPS and CUP (costs per CMIP).

 

Setting up the Amazon EC2 Tools on Linux

cmips-amazon-security-credentials-webTo download EC2 Tools you can useΒ this page from the Amazon Developer tools page, that links to the zip file in S3.

The Tools use Java, so you will need Java, at least v. 1.6 and can be uncompressed to any directory.

The tools use AWS_ACCESS_KEY and AWS_SECRET_KEY environment variables to know your credentials, and so passing the requests to Amazon API with them.

Amazon AWS_ACCESS_KEY can be seen on your AWS account.

Edit your ~/.bashrc to add the exports:

export AWS_ACCESS_KEY=your-aws-access-key-id
export AWS_SECRET_KEY=your-aws-secret-key

Run:

source ~/.bashrc

Please note Tools commands support pass of authentication on execution time with the params:

Β Β Β  -O, --aws-access-key KEY
    -W, --aws-secret-key KEY

Export the EC2_HOME variable, you can also add to ~/.bashrc:

export EC2_HOME=/home/cmips/ec2-tools

And you add also and export also to the PATH

export PATH=$PATH:$EC2_HOME/bin

Export the JAVA_HOME dir:

export JAVA_HOME=/usr

That means that you java binary is in /usr/bin

Test the Tools with: ec2-describe-regions

cmips-aws-amazon-tools-ec2-describe-regions

Then use the parameter –url or -U to specifify the url of the region you want to query.

You can also set the parameter EC2_URL environment variable if you prefer.

Eg:

    --url https://ec2.us-east-1.amazonaws.com

Alternatively you can use the parameter –region

Eg:

    --region us-east-1

–region overrides the value of –url

Other util parameters are:

Β –auth-dry-run or -D

To test instead of performing the action.

Β –verbose or -v

So let’s test the whole thing:

ec2-create-keypair --region us-east-1 cmips-test-key

cmips-amazon-developer-tools-ec2-create-keypair

The first text starting with ca:75:f9… is called the fingerprint and is a checksum of the KEY.

From this PRIVATE KEY (or .pem file) you can generate your public key:

ssh-keygen -y

You can list all your instances with:

ec2-describe-instances

Or the images available to you with:

ec2-describe-images

The images available to you can be public, your own images (private) or images that other AWS account has granted to be launched from yours (explicit).

You can describe AMIs, AKIs, and ARIs (Amazon Ramdisk Images).

You can request all the images available to you (it will take several seconds as there are thousands):

ec2-describe-images --all

Β cmips-amazon-tools-ec2-describe-all

Or your own images:

ec2-descibre-images --owner self

For owner you can specify any of these values:

amazon | aws-marketplace | self | AWS account ID | all

The second column is the AMI ID, that is unique for every zone.

Link to the Amazon’s documentation for ec2-describe-images.

You can also the list of official AMIs for Ubuntu here:

http://cloud-images.ubuntu.com/locator/ec2/

cmips-ubuntu-amazon-ec2-ami-locator

You can launch one or more instances (create new) with:

ec2run

Passing the AMI ID of the AMI, so the base image for the virtual disk, to launch.

For example:

ec2-run-instancesΒ ami-4bb39522 -O AWS_ACCESS_KEY -W AWS_SECRET_KEY

You can also import instances and create your own images:

ec2-import-instance
ec2-upload-disk-image

For example:

ec2-import-instance ./LinuxSvr13-10-disk1.vmdk  –f VMDK -t hi1.4xlarge -a x86_64 -b myawsbucket -o AKIAIOSFODNN7SAMPLE -w wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
Requesting volume size: 25 GB
Disk image format: Stream-optimized VMDK
Converted volume size: 26843545600 bytes (25.00 GiB)
Requested EBS volume size: 26843545600 bytes (25.00 GiB)
TaskType        IMPORTINSTANCE  TaskId  import-i-fhbx6hua       ExpirationTime  2011-09-09T15:03:38+00:00       Status  active  StatusMessage   Pending InstanceID      i-6ced060c
DISKIMAGE       DiskImageFormat VMDK    DiskImageSize   5070303744      VolumeSize      25      AvailabilityZone        us-east-1c      ApproximateBytesConverted       0       Status  active StatusMessage    Pending
Creating new manifest at testImport/9cba4345-b73e-4469-8106-2756a9f5a077/Linux_2008_Server_13_10_EE_64.vmdkmanifest.xml
Uploading the manifest file
Uploading 5070303744 bytes across 484 parts
0% |--------------------------------------------------| 100%
   |==================================================|
Done

Here you can find complete documentation on how to export instances/disks from Citrix, Microsoft Hyper-V and VMware.

Why is it important to know the APIs from the Cloud providers?.

In order to be able to automate tasks and to measure the time taken by the actions to be performed.

Most Cloud providers have their own APIs, while the smaller ones don’t.

Some Apache LibCloud supported ProvidersApache Libcloud provides an unified API for many providers, even for some of the providers that don’t offer direct API.

You can see the complete list of providers, and supported functionalities in:

http://libcloud.apache.org/supported_providers.html

 

CMIPS v.1.0.3 with GoGrid

cmips-gogrid-subscription-terms-payment-hourly-monthly-half-yearlyI introduce the tests for GoGrid Cloud Instances.

I tested three instances:

  • The smallest 1 core – 0.5 GB Ram
  • The medium-sized Extra Large – 8 GB Ram
  • The biggest XXX Large – 24 GB Ram

The biggest XXX Large comes with 1.2 TB (1,200 GB) of disk storage.

The tests have been done with Ubuntu Server 12.04 64 bit because latest Ubuntu Server 13.04 64 bit was not listed in the available OS list.

Must be remarked that GoGrid makes easy to select a reserved provisioning for long term, in the moment of creation of the instance, Extra Large (8GB) for example, the user is asked if he wants to go with a Subscription Term:

  • hourly at USD $0.64/hour
  • monthly at $290/month, instead of $460.80 (720 hours * $0.64/h)
  • Semiannual/half-yearly at $1,596/6 months, instead of $2,764.80 ($460.80 * 6) (Also $290 * 6 = $1,740)
  • yearly at $2,900/year, instead of $5,529.60 ($490.80 * 12)

Must be highlighted that they allow to hire a Cloud Server or a Physical Dedicated Server, from the same wizard.

GoGrid hybrid wizard

Is always nice to be able to create hybrid infrastructures, specially if you want really powerful Database Servers connected to your Webserver Instances, in the same network.

Is also remarkable that the smaller instance, with 1 Core and only 0.5 GB of Ram comes with 25 GB of disk storage. That’s good.

That smaller instance, Extra Small is called, performs just a bit less than my low-performance-high-battery Intel SU4100 Laptop, and double than Amazon’s M1 Small and 9 times more than Amazon’s t1.micro.

The Dedicated Servers start from US $300 per month. Would not be nice to be able to rent a Physical, Dedicated Server per hours as well? Or at least by days?.

I think people would try more often, as paying $10 per one day Server, for testing, is not so aggressively risky as having to try for a minimum of a month and investing $300 may be just to discover that this Server is not powerful enough, or that the Internet bandwidth does not fit your requirements.

Other thing curious is that they charge per Server, even if it is stopped. So to stop paying you have to delete the Server. If you stop it, you continue paying for the provisioned resources (disk and Ip address).

And I was surprised that in their Terms and Conditions they do not allow to use the servers as IRC Servers.

The registration process needs to perform a phone call, and supports many languages, and I tried Catalan, my language, and worked flawlessly.

CMIPS Stats

Detailed results:

Type of Service Provider Name of the product Codename Zone Processor Ghz Processor Cores (from htop) RAM (GB) Os tested CMIPS Execution time (seconds) USD /hour USD /month
Cloud Amazon T1 Micro t1.micro US East Intel Xeon E5-2650 2 1 0.613 Ubuntu Server 13.04 64 bits 49 20,036.7 $0.02 $14.40
Cloud Amazon M1 Small m1.small US East Intel Xeon E5-2650 2 1 1.6 Ubuntu Server 13.04 64 bits 203 4,909.89 $0.06 $43.20
Cloud GoGrid Extra Small (512 MB) Extra Small US-East-1 Intel Xeon E5520 2.27 1 0.5 Ubuntu Server 12.04 64 bits 441 2,265.14 $0.04 $18.13
Physical (laptop) Intel SU4100 1.4 2 4 Ubuntu Desktop 12.04 64 bits 460 2,170.32
Cloud Amazon M1 Large m1.large US East Intel Xeon E5-2650 2 2 7.5 Ubuntu 13.04 64 bits 817 1,223.67 $0.24 $172.80
Cloud Linode 1x priority (smallest) 1x priority London Intel Xeon E5-2670 2.6 8 1 Ubuntu Server 12.04 64 bits 1,427 700.348 n/a $20
Cloud Amazon M1 Extra Large m1.xlarge US East Intel Xeon E5-2650 2 4 15 Ubuntu 13.04 64 bits 1,635 606.6 $0.48 $345.60
Cloud Amazon M3 Extra Large m3.xlarge US East Intel Xeon E5-2670 2.6 4 15 Ubuntu 13.04 64 bits 2,065 484.1 $0.50 $360
Cloud Linode 2x priority 2x priority Dallas, Texas, US Intel Xeon E5-2670 2.6 2 Ubuntu Server 12.04 64 bits 2,556 391.19 n/a $40
Cloud GoGrid Extra Large (8GB) Extra Large US-East-1 Intel Xeon E5520 2.27 8 8 Ubuntu Server 12.04 64 bits 2,965 327.226 $0.64 $290
Cloud Amazon C1 High CPU Extra Large c1.xlarge US East Intel Xeon E5506 2.13 8 7 Ubuntu Server 13.04 64 bits 3,101 322.39 $0.58 $417.60
Dedicated OVH Server EG 24G EG 24G France Intel Xeon W3530 2.8 8 24 Ubuntu Server 13.04 64 bits 3,881 257.01 n/a $99
Cloud Amazon M2 High Memory Quadruple Extra Large m2.4xlarge US East Intel Xeon E5-2665 2.4 8 68.4 Ubuntu Server 13.04 64 bits 4,281 233.545 $1.64 $1,180.80
Cloud Rackspace RackSpace First Generation 30 GB RAM – 8 Cores – 1200 GB US Quad-Core AMD Opteron(tm) Processor 2374 HE 2.2 8 30 Ubuntu Server 12.04 64 bits 4,539 220.89 $1.98 $1,425.60
Physical (desktop workstation) Intel Core i7-4770S 3.1 (to 3.9 with turbo) 8 32 Ubuntu Desktop 13.04 64 bits 5,842 171.56
Cloud Digital Ocean Digital Ocean 48GB RAM – 16 Cores – 480 GB SSD Amsterdam 1 QEMU Virtual CPU version 1.0 16 48 Ubuntu Server 13.04 64 bits 6,172 161.996 $0.705 $480
Cloud Amazon High I/O Quadruple Extra Large hi1.4xlarge US East Intel Xeon E5620 2.4 16 60.5 Ubuntu Server 13.04 64 bits 6,263 159.65 $3.1 $2,232
Cloud Digital Ocean Digital Ocean 64GB RAM – 20 Cores – 640 GB SSD Amsterdam 1 QEMU Virtual CPU version 1.0 20 64 Ubuntu Server 13.04 64 bits 8,116 123.2 $0.941 $640
Cloud Digital Ocean Digital Ocean 96GB RAM – 24 Cores – 960 GB SSD New York 2 QEMU Virtual CPU version 1.0 24 96 Ubuntu Server 13.04 64 bits 9,733 102.743 $1.411 $960
Cloud GoGrid XXX Large (24GB) XXX Large US-East-1 Intel Xeon X5650 2.67 32 24 Ubuntu Server 12.04 64 bits 10,037 99.6226 $1.92 $870
Cloud Amazon Memory Optimized CR1 Cluster 8xlarge cr1.8xlarge US East Intel Xeon E5-2670 2.6 32 244 Ubuntu Server 13.04 64 bits for HVM instances (Cluster) 16,468 60.721 $3.5 $2,520
Cloud Amazon Compute Optimized CC2 Cluster 8xlarge cc2.8xlarge US East Intel Xeon E5-2670 2.6 32 60.5 Ubuntu Server 13.04 64 bits for HVM instances (Cluster) 16,608 60.21 $2.4 $1,728

 

How CMIPS cloud-init tests are done

To test aspects like the time that a server takes to become available there two approaches can be used:

1) Manually laborious launch the instance creation order (from web or from API call) and start the counter of a chronometer

Then keep refreshing for the instance id to get the public dns name, or Ip, and then ping to know when the interface is up, then keep trying to access via ssh.

Stop the chronometer…

2) Go more pro and automate test through Cloud-Init procedure

That’s specifying your script, that will be executed when the instance starts.

This is done in Amazon through the User data.

cmips-amazon-user-data-scriptThere you can provide your scripts in plain text, in base64, or add as a file and they are executed as root.

In our case I created my scripts to automate tests and save time, while being more accurate.

Sample User data script for cmips tests:

 

#!/bin/sh
# cmips v.1.0.3 cloud init execution tests

# Define routes
file_name=cmips-speed-test.000

# Complete Path, on cloud-init through user data $HOME is empty, so data will be at /
# user data script is executed as root, so no problem of permissions
file_route=$HOME/$file_name

# Get the time when the server is up
date_server_up=`date +"%Y-%m-%d %k:%M:%S:%N"`
date_server_up_unix_time=`date +"%s"`

# In case invoked from command line, show some info
echo "Using logfile $file_route.log Server up: $date_server_up Unix Time: $date_server_up_unix_time"
echo "-----------------------------------------------------------------------------------" >> $file_route.log
echo "Server up: $date_server_up Unix Time: $date_server_up_unix_time" >> $file_route.log

# Add packages you want
apt-get install htop >> $file_route.log
apt-get install git >> $file_route.log

# Here you can add packages like mysql, apache, php... and monitor the time
# You can also clone from github your source code to deploy your web

$date_end_packages_install=`date +"%Y-%m-%d %k:%M:%S:%N"`
$date_end_packages_install_unix_time=`date +"%s"`
echo "Package finished installing at $data_end_packages_install Unix Time: $date_end_packages_install_unix_time" >> $file_route.log

# Do Connection Speed tests
# ...

# Do cmips tests
# ...

# Get start of time for disk speed calculations
date_start_dd_unix_time=`date +"%s"`
date_start_dd=`date +"%Y-%m-%d %k:%M:%S:%N"`

echo "Starting cmips dd tests at $date_start_dd Unix time: $date_start_dd_unix_time"
echo "Starting cmips dd tests at $date_start_dd Unix time: $date_start_dd_unix_time" >> $file_route.log

dd if=/dev/zero of=$file_route bs=4M count=64 >> $file_route.log ; sync

date_end_dd_unix_time=`date +"%s"`
date_end_dd=`date +"%Y-%m-%d %k:%M:%S"`
total_seconds=`expr $date_end_dd_unix_time - $date_start_dd_unix_time`

echo "Ending cmips dd tests at $date_end Unix time: $date_end_dd_unix_time Total seconds dd with sync: $total_seconds"
echo "Ending cmips dd tests at $date_end Unix time: $date_end_dd_unix_time Total seconds dd with sync: $total_seconds" >> $file_route.log

In /var/log you can find the cloud-init.log file and examine it in deep if you’re curious.

I use dd to get data about disk performance. Is not so evident in Cloud, as all the Virtual platforms cache the file I/O from the guest instances, so tests with smalland medium-sized files are not trustworthy, and so certain aspects have to be taken in count:

  • Test with big files: 1 GB or bigger
  • Use block-size 4 MB at least
  • Use sync, and calculate the real time it takes to release (even if is the Host and not the guest who controls that, it brings more accurate results)
  • Do several tests, can have disparity in results
  • Use /dev/zero . To really prevent caching I would prefer to use /dev/urandom but it really slows the tests and distort the results

Introducing CUPS

CUP – Cost of Unit Process, CUP is the cost in USD to get 1 CMIP for a given instance.

CUP is get by diving cost of the instance per-hour-running by the number of CMIPS that the instance achieved in the tests.

So we get the next table, sorted from cheapest to expensive:

Instance name CMIPS Price/CMIP
Linode 1x priority (smallest) 1427 0.0000194658568870202
Linode 2x priority 2556 0.000021735350373848
OVH Server EG 24G 3881 0.000035429
Digital Ocean 48GB RAM – 16 Cores – 480 GB SSD 6172 0.0001142255
Digital Ocean 64GB RAM – 20 Cores – 640 GB SSD 8116 0.0001159438
Amazon CC2 Cluster Compute 16608 0.0001445087
Digital Ocean 96GB RAM – 24 Cores – 960 GB SSD 9733 0.0001449707
Amazon C1 High CPU Extra Large 3101 0.0001870364
Amazon Memory Optimized CR1 Cluster 8xlarge 16468 0.0002125334
Amazon Second Generation M3 Extra Large 2065 0,0002421308
Amazon M1 Extra Large 1635 0.000293578
Amazon M1 Large 817 0.0002937576
Amazon M1 Small 203 0.0002955665
Amazon M2 High Memory Quadruple Extra Large 4281 0.0003830881
Amazon T1 Micro 49 0.0004081633
RackSpace First Generation 30 GB RAM – 8 Cores – 1200 GB 4539 0.0004362194
Amazon High I/O Quadruple Extra Large 6263 0.0004949705

And the graphic, sorted from expensive to cheap.

Orange bars reflect CUP (multiplied by 10M to fit well in the graph), and blue bars show MIPS achieved by the instance.

cmips-cups-2013-09-21-cost-unit-power

Desktop: Intel i7-4770S and Laptop: Intel SU4100 have no CUP associated as are included in the graph only to compare CPU performance.

So, having also all the other parameters in mind (bandwidth per instance, cost per exceeded Gigabyte, storage, speed of the storage, time to launch a new instance, if provisioning is paid by hour, by day or by month, etc…) most Startups that use webservers and the Cloud to scale up Arrays of instances to deal with peaks at highly traffic hours, and scale down the number of instances at valley hours or when number or users/traffic decreases, will consider using the instances with lower CUP, or find a balance between instance with enough performance and low Cost of Unit Process.