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, particularly in the High Performance Computing (HPC) space, 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 time defining what the cloud is – I think enough of the internet has been used up on that point ad nauseam. Let’s focus our attention instead 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 which simplify and enable access to on-demand computing in the cloud, supercomputing power is now at the fingertips of a whole new segment of the market, often referred to as the “Missing Middle”.
The increasing adoption of programming paradigms such as the classic MPI (Message Passing Interface) and the more recently popular Map-Reduce have provided simple yet powerful mechanisms for massively parallel problem solving, generating more interests in large-scale computing as well as the need for systems that can support such computing.
The long-term implications of the cloud are still being rationalized 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 help enable cloud computing (e.g. virtualization) that also provide certain benefits that are relevant to this conversation. Let’s review some of the factors that should be understood when evaluating HPC in the Cloud.
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 and accounted for more granularly. We have come across a number of studios that have gone out of business as they invested in infrastructure only for the project to go on hold… ouch! The cloud represents a very low-risk way for businesses to fulfill computing needs.
Flexibility: The cloud supports rapid provisioning for particular workloads. The ability to dynamically roll out specific OS/Software and hardware configurations particular to a workload is a key advantage.
Speed of deployment: The ability to rapidly provision new environments/clusters in minutes is key to the success and practicality of on-demand computing. Compare this to the months it can typically take to provision new hardware on-premise.
Scalability: Elastically scaling out to meet increased capacity demands is a powerful concept and the obvious benefit of the cloud. The public cloud promises “infinite” scale. The reality is somewhat different where there are very real limits that need to be proactively managed. However the performance levels that can be obtained from large providers such as Windows Azure and AWS are orders of magnitude 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.
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. The abstractions exposed in the GreenButton SDK support this sort of portability.
Security: this remains a significant barrier to adoption today however the issue is primarily in trust and perception rather than 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 (I’m sure that point may raise some objections). 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 processing in the cloud.
Performance: There is no single answer to the question of performance. In general the cloud offers massive performance gains in most cases (and therefore is generally a positive). This does however depends entirely on the workload in question and there are some challenges/limitations today. Some workloads scale in a linear fashion i.e. embarrassingly parallel. Even many MPI workloads scale very 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 more or less non-existent out there in the cloud today. None of the big-name 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 excellent 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/
License Management: Management of licenses in the cloud is a difficult problem both for Software Vendors and end users. As an end user if I want to spin up 100 8 core nodes for a couple of hours, do I have to acquire 100 more licenses? GreenButton works with Software Vendors to make their software available on a transactional basis whilst providing reporting and accounting on usage of their software in the cloud.
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. This is an area we have placed a lot of focus at GreenButton with our Mission Control web tool.
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 meaning no data needs to be move backwards and forwards to the customer’s site. 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: One of the primary concerns of organizations looking to adopt the cloud is vendor lock-in. This is a key benefit of the GreenButton solution and I have blogged about this previously here.
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 in the way of a private cloud. We speak with many larger organizations where the prospect of running compute-intensive 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.
The positives far outweigh the challenges for most scenarios and thus I hope I’ve convinced you that the cloud is an ideal platform for a large portion of 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_fellows