FreeBSD/EC2 cluster compute
A few months ago, I announced experimental FreeBSD/EC2 support, and for the past four weeks FreeBSD 8.2-RELEASE AMIs have been available on Amazon EC2; but unfortunately these have been limited to "t1.micro" instances. It's impressive how much can be done with a fraction of a CPU and 600 MB of RAM; but sometimes you really need something a bit more powerful. I'm pleased to announce that, thanks to support from SegPub and vtalk, FreeBSD is now available on cc1.4xlarge instances.For those of you unfamiliar with the wide range of virtual machines available from EC2, perhaps the best way to put it is this: cc1.4xlarge instances are as big as t1.micro instances are small. They have 8 cores of 2.93 GHz Nehalem, 23 GB of RAM, two 840 GB ephemeral disks (plus as many EBS volumes as you want to create, of course), and 10 Gbps network connectivity. The name "cluster compute" suggests one way of using these instances, but Amazon would have been perfectly justified in calling these "do anything you want and still have power to spare" instances.
One of the things I've heard a lot of EC2 users say they want over the past few months is ZFS support. Linux, of course, doesn't support ZFS (userland kludges and license violations notwithstanding); and with Oracle apparently doing its best to kill OpenSolaris, FreeBSD has rapidly become the de facto standard operating system for ZFS. Unfortunately, ZFS wasn't designed for 32-bit systems with 600 MB of RAM, so attempting to run it on t1.micro instances is a very good way to cause a kernel panic; but it works beautifully on cc1.4xlarge instances.
Because cc1.4xlarge instances run "hardware virtualized" rather than "paravirtualized" Xen, they avoid most of the hard work which was needed to get t1.micro instances working. Indeed, bringing FreeBSD to cc1.4xlarge instances only required one significant bugfix (actually a workaround -- there's a bug in the Xen serial port emulation and I had to modify FreeBSD's UART code to be compatible with it) and the rest of the work was packaging and wrangling startup scripts. As a result, I have absolutely no hesitation in saying that FreeBSD is production-ready on cluster compute instances. (8.2-RELEASE on t1.micro is in "use with caution" territory -- so far it seems very stable, but it's too early to be confident about its stability.)
What's next for FreeBSD/EC2? Probably improving FreeBSD 9.0-CURRENT stability on t1.micro instances. Right now there are pmap locking (or rather, lack-of-locking) bugs in FreeBSD's paravirtualized Xen code which make 9-CURRENT far less stable than 8.2-RELEASE. With some luck I should be able to get this done before 9-STABLE branches in a few months so that it can be tested in the lead up to 9.0-RELEASE.
But this depends in large part on what FreeBSD users find that they need in EC2. Go launch some instances and let me know what you think.