I use linode for hosting, moved from slicehost - cheaper, and more options. Multiple datacenters etc.
>> "...and pay by the hour"
If you have money to burn.
I can see the case for this sort of scalability if your traffic is wildly unpredictable - eg 1 visit one day, 100,000 visits the next - but I think that's rare.
I think in future I'll ignore votes of newly created accounts in polls. For now I'm going to manually subtract them.
I originally was thinning between SliceHost and Linode, the Linode offered 'more bang for the buck' - same prices (and as far s I've read, quality too) as SliceHost, but with more RAM and disk space
Our application, for instance, uses mmap heavily and pretty easily tears through 4 GB of address space while comfortably running on a machine with less RAM.
One other nitpick I'd add there is that 64-bit runtimes consume drastically more memory -- mostly meaning interpreted languages, JVMs, etc. Compiled C, C++, etc. fare better since they usually make use of the stack more widely rather than having everything running through three levels of indirection (thus using lots of 8-byte pointers) up in the heap.
Perhaps there are special cases where it still makes sense, despite losing memory (though your example use case makes me feel funny, and not in a good way, but I don't know enough about such things to argue), but in the general web hosting case, it is stupid to have a 64 bit OS with less than 4GB of RAM. As you note, the difference is much more dramatic in dynamic languages (Ruby, Python, PHP, and Perl applications simply explode in size when run on 64 bit systems...like 50%-75% larger).
mmap is a way of treating files or parts of files as memory when interacting with them and is used pretty often in low-ish level stuff that does file wrangling as it's one of the more performant ways of doing random access on a file. Since those files are being accessed as memory they consume space from the 4 GB of address space on a 32-bit platform, but don't take up physical memory (except insofar as their contents is cached in disk buffers).
That's one thing that's often misunderstood with the 32-bit limitation -- address space is limited; modern "32-bit" CPUs have used 36-bit addressing internally for quite some time, meaning they can address 64 GB rather than 4 GB of RAM (http://en.wikipedia.org/wiki/Physical_Address_Extension).
Because of the address space limitations you also don't have a full 4 GB to work with inside of a process on 32-bit platforms -- if you try to allocate a 3.5 GB block of memory it will usually fail because there's no contiguous block of address space available, even if there's 3.5 GB of unused memory. Typically the Linux kernel reserves 1 GB of address space for itself, and user space reserves a block for memory mapped I/O devices as well.
There's a pretty good article explaining some of this here:
http://kerneltrap.org/node/2450
Now, all of that said, I'm not disagreeing with your advice -- just noting that there are some (mostly corner-) cases where you do need the address space, but may not need the physical memory.
Noticed that most graphs start with the baseline being the lowest value (usually slicehost 512). Which is ok, but for somebody just glancing at them it looks like linode is always a few times better, when usually it's only 10-30%. Some form of relative comparison might be useful.
I'm surprised to see it, since the majority of folks prefer Linux by some margin (certainly the userland is better on Linux). But Solaris has some killer features in the cloud space, and Joyent are doing a great job taking advantage of them. Solaris Zones are quite a bit more efficient than Xen, and quite a bit more stable than OpenVZ/Virtuozzo and vservers (which use roughly the same model as Solaris Zones).
* - I've no idea how much CX costs though
In which case I retract recommending MT :P
Amazon + Scalr is by far my favourite.
I host my website with Media Temple on their (gs) Grid, but when I use utility comp services, I use Amazon. Why is Media Temple even on here? Utility computing services let you provision servers at will, where Media Temple still has to provision your server for you.
So, to answer your question, I use AWS EC2 as my "cloud host".
I wish AWS offers EC2 instances with less ram like 512mb and 1GB.
I was going to try Cloud Server from Mosso(http://www.mosso.com/cloudservers_pricing.jsp). But its outgoing bandwidth is too expensive for 22cents/GB.
I haven't looked at it in depth so I don't know how it compares to the offerings listed above. My guess is that it's closer to AppEngine - you write to the MS stack and deploy on their infrastructure, the details of that infrastructure are opaque to you.