Monday, May 15, 2006

Thoughts on Sun's Grid

Since my company's product (Centauri) is a part of Sun's N1 Grid Reference Architecture, I decided to sign up for a Sun Grid account to try out the service. After a few fits and starts (primarily having to do with requiring a PayPal account for some random reason), I finally received a note from Sun last week that my Grid account was set up and ready to go (if you 'd like to try it yourself, go to www.network.com).

Basically, the idea behind a grid is that a large number of computing machines are linked together into a "grid," ready to serve processing needs. There are two main initiatives in this area (well, actually three, but HP's offering isn't even close to baked): Sun's Grid and IBM's Grid. Sun's offering provides CPU facilities on an as-needed basis for $1/CPU hour, with no requirements as to maximum and minimum usage--just like an electric utility, you just use the compute power when you need it. The idea is really germane for large enterprises, which have cyclical/seasonal spikes in compute need (a classic example is retail, which typically needs a lot of resources in the November and December months).

It's a great idea, and since we're a part of Sun's initiative, I thought I'd give their compute utility a spin. Sun makes it sound really easy to use: 1) upload your application, 2) run your job, and 3) get your results. Unfortunately, step #1 is where it gets hairy--it's not easy or intuitive in the least to upload an application to the grid.

First, you have to upload a standalone (no console input), 32- or 64-bit pre-compiled application that will run on the Solaris 10 x86 operating system, or a generic Java binary. This automatically excludes pretty much most of the market, as I for one don't have an application of that type just lying around waiting to be run. There are clearly markets that do--such as life sciences--but this is far from an intuitive way to demonstrate the grid to a casual or business user. Once the application is uploaded, then steps 2 and 3 are pretty straight forward.

Unfortunately, this offering is going to go nowhere with your typical user of technology unless it gets much easier to use. I have an idea that probably involves a lot of coding and would definitely require some guru-level Windows operating system knowledge, but if this is possible, it would open up the Sun Grid to virtually anyone.

I got this idea the other day when I was playing with my sparkling new Dell Latitude laptop, which has an Intel Centrino Duo dual-core processor (basically it's two processors in one chip). One of the neat features of having two processors is the concept of "processor affinity" -- you can easily specify which processor you would like a given Windows task to run on (both or only one, and you can even specify exactly which processor). This is useful if you have an application that uses a lot of CPU (like a video rendering application)--you can tell Windows to allow it to run on only one processor, thereby keeping your system responsive and available for other tasks.

My idea is this--what if Sun provided a "hook" into the Windows OS that allowed the grid to appear in the Windows task list as an additional processor? I could then tell the grid to handle the processing needs of my video rendering application, which would conceivably be a lot faster than my dual core processor, even if I allow it to run on both processors at full tilt. There are of course many loose ends to this idea, such as how to get the data that needs to be processed up to the grid (you probably don't want to try to move gigabytes of data across the Internet), but it's just this sort of simplicity that would open up the grid to a market larger market--there are thousands of "power users" such as myself that would love to offload large processing tasks to the grid, especially if the costs were reasonable, known in advance, and capped somehow.

That actually leads me to utility computing problem #2--how do you estimate costs for a job before you actually incur them, and make sure that costs don't go through the roof? For example, using my video rendering example above, I'd really like to know if offloading the process to the grid is going to cost $1, $10 or $100 *before* I submit it (it would probably be OK if you could at least get an estimate once the job has been sent up to the grid and before processing has begun). I would also want to be able to place a spending cap on the job so that I don't wind up with a $10,000 processing bill.

One last thought on making the grid easier to use and opening it up to a larger market--I've thought for a number of years that if Sun and IBM could open up their grids to so-called "commodity hardware" (vis a vis desktop PCs, etc), they could tap an incredibly large pool of largely unused processor power. For example, I run an application on my laptop called 'Boinc', which allows me to dedicate my unused processor cycles to various causes such as the Search for Extra-Terrestrial Intelligence (SETI) and Rosetta (the former searches radio signals from space for signs of life, and the latter searches for cures to diseases such as cancer).

If you take this concept and apply it to large enterprises, which have tens of thousands of desktop PCs, and consider that most of them are unused 90%+ of the time, and then plug this unused capacity into a grid, they could tap an incredible source of compute power--one that is also basically free (since CapEx costs for the equipment are already incurred--the only additional cost is additional electricity used and possibly some wear-and-tear by running the CPU at high levels).

I can think of one main reason why Sun and IBM haven't tapped this pool of resources--how do you monetize it? If you're in the business of selling computing capacity, why would you want to provide technology that makes it easier *not* to use the commercial grid services? This would make more sense for a startup that would be in the business of selling the grid technology itself, rather than the utility of a grid.

In summary, I think that for utility computing to truly achieve the status of a utility that is available to the common person, it's got a long way to go. In the meantime I'm sure it will begin to be adopted by specialized vertical markets that have heavy compute requirements, like life sciences and entertainment, but I for one am at a loss as to how to make use of my ten free Grid CPU hours that Sun so gracefully provided me...

Wednesday, May 10, 2006

MINIX 3 - Tiny Linux

MINIX will run in a very small amount of memory, and can even be configured to boot from a USB thumb drive. This could be very useful for creating boot images for troubleshooting or even putting up an "on demand" website.

From the MINIX website:

What Is MINIX 3?

MINIX 3 is a new open-source operating system designed to be highly reliable, flexible, and secure. It is based somewhat on previous versions of MINIX, but is fundamentally different in many key ways. MINIX 1 and 2 were intended as teaching tools; MINIX 3 adds the new goal of being usable as a serious system on resource-limited and embedded computers and for applications requiring high reliability

This new OS is extremely small, with the part that runs in kernel mode under 4000 lines of executable code. The parts that run in user mode are divided into small modules, well insulated from one another. For example, each device driver runs as a separate user-mode process so a bug in a driver (by far the biggest source of bugs in any operating system), cannot bring down the entire OS. In fact, most of the time when a driver crashes it is automatically replaced without requiring any user intervention, without requiring rebooting, and without affecting running programs. These features, the tiny amount of kernel code, and other aspects greatly enhance system reliability.
MINIX 3 is initially targeted at the following areas:
  • Applications where very high reliability is required
  • Single-chip, small-RAM, low-power, $100 laptops for Third-World children
  • Embedded systems (e.g., cameras, DVD recorders, cell phones)
  • Applications where the GPL is too restrictive (MINIX 3 uses a BSD-type license)
  • Education (e.g., operating systems courses at universities)