VM-enabled polycore computing

Patrick Logan points to a fascinating opinion piece in the Register by Shahin Khan of Azul Systems. Patrick quotes this bit:

A major shift is coming. Over the next few years, your ordinary applications will be able to tap into systems with, say, 7,000 CPUs, 50 tera bytes of memory, and 20 peta bytes of storage. In 2005, Azul Systems will ship compute pools with as many as 1,200 CPUs per a single standard rack (1.2 kilo cores! - I like the sound of that!)

What would change about application design if you could do this? Well, think back to what applications were like when you had just 128K of memory in your PC and a 512KB hard drive. The difference between the capabilities and flexibility of applications in those days and now is the level of improvement that we are talking about. [Register: Get ready to buy chips by the kilo]
The prospect of polycore computing suggests, to Patrick, that it's time to revisit programming systems designed for large-scale parallelism:
A single Erlang node on a single CPU today can comfortably get into the tens of thousands of dynamic processes. What would your system look like running hundreds of thousands or a million dynamic processes and lot of activity is spent collaborating with other systems also running at that scale?

See "Apache vs. Yaws" (Yaws is an Erlang-based web server)...
Yaws is still functioning at over 80,000 parallel connections.

I'm sure Patrick's instinct is correct. What is also interesting to me is the way in which virtual machines such as the JVM and CLR are enablers of this large-scale parallelism. Here's how Azul describes its notion of network-attached processing:

This new computing paradigm lifts the compute function off servers and provides the application tier with a consolidated, shared compute resource. This is accomplished by transparently redirecting virtual machine-based workloads from the application host machines to a dedicated pool of compute resources designed and optimized purely for application virtual machine workloads.

...

The key to network attached processing is Azul virtual machine proxy technology. This patent-pending technology, initially targeted at Java and J2EE platform-based applications, transparently redirects application workload to the compute pool. [Azul Systems: Products and Solutions

Clearly we're invited to read between the lines and imagine a .NET-oriented solution waiting in the wings. But why stop there? LAMP's virtual machines -- the Perl, Python, and PHP runtimes -- would love to be supported by something fancier than a flock of Apache processes. I guess that Erlang's VM would too.

With respect to Java, you'd think that Sun would be driving these kinds of innovations. I've wondered, in the context of system administration, why Solaris and the JVM aren't being brought into closer strategic harmony. Here's yet another reason to do that.


Former URL: http://weblog.infoworld.com/udell/2005/01/13.html#a1150