Cloud computing has emerged as a model to address a broad range of computing needs and promises to solve all but world peace. The idea of utility or on-demand computing is hardly new but the business models and technology have matured sufficiently to propel the concept firmly back into the limelight.
I’m not going to waste your (or my) time defining what the cloud is – I think enough of the internet has been used up on that point ad nauseam. Let’s instead focus our attention on some of the implications the cloud presents for compute-intensive applications - and the enterprise in general.
Before we move on – let’s clear the air on one thing; A lot of folks pigeon-hole HPC as scientists geeking out with massive supercomputers. This is commonly referred to as High Performance “Technical” Computing. There is a far more significant market evolving outside of traditional HPC with growing computational needs. Big Data is a good example of this where the opportunity for deep analytical insight is an extremely attractive proposition to a wide range of vertical markets. Further to this, with disruptive technology solutions like the GreenButton, supercomputing power is now at the fingertips of a whole new segment of the market, often referred to as the “Missing Middle”.
The long-term implications of the cloud are still being understood as IT departments experiment with different private and public cloud models and balance their infrastructure needs across both static and spikey (or elastic) computing requirements.
Cloud computing is ultimately a business model (well, it’s primarily a confusing marketing term but let’s not get hung up on that) but there are typically a common set of technical capabilities that are realized in the cloud (e.g. virtualization) that provide certain benefits that are relevant to this conversation. Let’s quickly review some of the factors that need to be taken into account.
Cost: For spikey workloads, the cost savings in the cloud can be significant. What’s more, the cost is an Operational Expense rather than Cap-Ex so is often more palatable for many businesses as costs can be attributed to a particular project.
Ease of use: The cloud can make dynamic provisioning of specified workloads very easy. The ability to have OS/Software configurations particular to a workload is a key advantage.
Speed of deployment: The ability to rapidly provision new environments/clusters in minutes is incredibly valuable to many businesses.
Scalability: Elastically scaling out to meet increased capacity demands is a powerful concept. The public cloud promises “infinite” scale. The reality is somewhat different where there are some very real limits even in the cloud, though the performance levels that can be obtained from large providers such as AWS and Azure is far greater than what most customers can fathom with internal hardware.
Resiliency: The ability to snapshot workloads as they are running can allow for check-pointing of MPI workloads. A number of virtualization solutions provide the ability to dynamically move a guest VM from one physical host to another. If you can proactively detect that a piece of hardware is going to fail through active monitoring of the right metrics then you can take remedial action and avoid any downtime. Sure, this capability is not quite fully there yet but it is certainly possible in a virtualized world.
Portability: The ability to move a workload from one cloud platform to another on the fly without any application changes presents powerful options such as for bursting from a private cloud out to a public cloud, High Availability where a workload is run on multiple clouds simultaneously, scaling across multiple clouds to meet extremely high resource requirements or, to take advantage of shifts in the spot pricing market.
Security: this remains a significant barrier to adoption today however I believe the issue is primarily in trust and perception rather than real limitations in capability and architecture of various cloud platforms. One could argue that in some cases your data is safer in the hands of Amazon or Microsoft than your own data center. That said, data isn’t sufficiently secure by default so some effort commensurate to the sensitivity and risks needs to be applied. For example;
- Encryption at rest of cloud-bound data.
- Limiting the time window that data is resident in the cloud.
- Anonymizing data. A great example is running risk models for the financial services sector where sensitive customer data can easily be stripped out prior to sending to the cloud.
Performance: There is no single answer to the question of performance, though in general the cloud offers massive performance gains in most cases (and therefore is generally a positive), this does depends entirely on the workload in question and presents some challenges/limitations today. Some workloads scale in a linear fashion i.e. embarrassingly parallel. Even many MPI workloads scale perfectly well on cloud infrastructure.
I/O bound MPI processes however will often run into performance related challenges due to their heavy demands on network infrastructure or sensitivity to latency. A significant number of traditional HPC applications are developed and tuned on very low-latency Infiniband interconnects (~2 microseconds) and take advantage of RDMA technology. The majority of these applications just won’t scale on 10 GigE networks. There is RDMA support for Ethernet however this is still in its infancy and non-existent out there in the cloud world today. None of the large public cloud providers are supporting Infiniband as yet though I see that changing in the future. It will be a great milestone when this happens and will dramatically widen the net of HPC workloads that can be supported in the cloud.
Other challenges lie in certain cloud platforms intentionally distributing your deployed instances across the data center to increase availability. In the case of HPC, this has a negative effect. Windows Azure currently suffers from this however I believe we will see this rectified with more flexible control over physical placement of VMs – similar to what AWS offers with Placement Groups for their Cluster Compute instances.
I’m not going to dwell on the overhead of virtualization as there is a lot of material on the web covering this topic. I will say that modern virtualization technologies have such a small overhead on CPU performance today that it is effectively negligible. The I/O hit in some cases can be more noticeable but this depends on the characteristics of the workload. VMware have some blog posts and papers talking about virtualization overhead. In particular, I’d check out Josh Simons’ posts on HPC and Virtualization: http://cto.vmware.com/author/joshsimons/
Management: One of the challenges when spreading workloads across more than one platform is management of the workloads and resources being utilized. Being able to consolidate management within a single tool becomes critical for effective use of the cloud for HPC.
Data: Moving large datasets to the cloud still presents some challenges. Whether this is a real issue or not depends on the scenario. It all comes down to the amount of compute required relative to the size of data. In the Oil & Gas sector we physically ship 50TB+ to AWS where weeks/months of processing will be performed for a customer project. In this case, the entire workflow lives in the cloud using visualization technology. RenderMan workloads also present challenges with large datasets (up to 1GB per frame) and we have had to develop IP specifically to deal with this efficiently. There are companies like Aspera and Signiant who have developed smart technology for optimizing throughput over the internet using the UDP protocol (rather than the miserably inefficient TCP).
Managing Costs: There is obviously some level of fear when moving from a known and understood capital expenditure model to one of pay-by-the-drink where costs could spiral out of control. Trust me, this has many CFOs awake at night in a cold sweat. This has been a strong area of focus for GreenButton from day one resulting in some unique (and patented) technology for predicting job execution time and committing to users on runtime and cost. Being able to provide assurances to users by presenting capped price options is proving an effective solution. Further to this, we have the commercial and billing models to support more complex billing relationships and departmental chargebacks for enterprise customers.
Cloud Lock-in: Refer to my previous post on avoid cloud lock-in.
One of the advantages of moving HPC workloads to on-demand virtualized infrastructure is the ability for Enterprise customers to take advantage of internal hardware investment i.e. in the way of a private cloud. We speak with many larger organizations where the prospect of running HPC workloads across their private cloud is very enticing (the private cloud obviously solves some of the issues around security and data transfers). Throw in the ability to seamlessly burst to nominated public clouds (based on configured policy) and you have something pretty compelling indeed.
So I hope I’ve convinced you that the cloud is an ideal platform for a large portion of HPC (and non-“HPC”) workloads already. Many of the challenges that exist today are constantly being whittled away by the IaaS platform providers themselves or by software vendors such as GreenButton. There is a common perception that High Performance Computing is overly complex. So complex that mere mortals are not able to tap into the massive benefits and business value that can be obtained. It is our goal to continue to make the complex world of HPC more and more accessible to the mass-market.
Follow me on twitter @dave_fellowsComments powered by Disqus
- davefellows posted this